我在字符串中附加了“\ 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}"/>
答案 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>