使用c out标记时不会出现新行

时间:2013-01-25 02:33:43

标签: html jsp jstl

我在字符串中附加了“\ n”,当使用s标签textarea时,附加了换行符并逐行显示数据。但是当我使用c out标签时,数据显示在一行中。如何使用c out标签逐行显示?

StringBuffer sb = new StringBuffer();
    for (MyBean bean : beanList) {

                sb.append((bean.getName());
                sb.append("\n");
            }
            return sb.toString();

JSP

<c:out value="${myData}"/>

1 个答案:

答案 0 :(得分:16)

JSP生成HTML。在HTML中,新行由<br>元素表示,而不是由换行符表示。更重要的是,如果你查看普通的HTML源代码,你会看到很多换行符,但默认情况下它们根本不会被webbrowser解释。

除了使用HTML <br>元素而不是换行符,

sb.append("<br />");

并且不像<c:out>那样打印${myData},您也可以使用HTML <pre>元素来保留空格,

<pre><c:out vaule="${myData}" /></pre>

或者只在父元素上应用CSS white-space:pre,就像HTML <textarea>元素在内部做的那样:

<span style="white-space:pre"><c:out value="${myData}"/></span>

(注意:比class更推荐style,以上只是启动示例)

建议采用后两种方法。 HTML代码不属于Java类。它属于JSP文件。更重要的是,您可能实际上应该使用JSTL <c:forEach>来迭代集合而不是整个Java代码。

<c:forEach items="${beanList}" var="bean">
    <c:out value="${bean.name}" /><br />
</c:forEach>