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

kit*_*kid 6 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();
Run Code Online (Sandbox Code Playgroud)

JSP

<c:out value="${myData}"/>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 16

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

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

sb.append("<br />");
Run Code Online (Sandbox Code Playgroud)

并且在没有<c:out>这样的情况下打印它${myData},你也可以使用HTML <pre>元素来保留空白,

<pre><c:out vaule="${myData}" /></pre>
Run Code Online (Sandbox Code Playgroud)

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

<span style="white-space:pre"><c:out value="${myData}"/></span>
Run Code Online (Sandbox Code Playgroud)

(注意:a class比推荐更多style,上面只是一个启动示例)

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

<c:forEach items="${beanList}" var="bean">
    <c:out value="${bean.name}" /><br />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)