6

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

1 回答 1

19

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

除了使用 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>

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

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

<c:forEach items="${beanList}" var="bean">
    <c:out value="${bean.name}" /><br />
</c:forEach>
于 2013-01-25T02:59:03.027 回答