【问题标题】:new line doesn't appear when using c out tag使用 c out 标签时不出现新行
【发布时间】:2013-01-08 23:34:12
【问题描述】:

我在字符串中附加了“\n”,当使用 s 标签 textarea 时,已附加换行符并逐行显示数据。但是当我使用 c out 标签时,数据显示在一行中。如何使用 with 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}"/>

【问题讨论】:

  • 你在浏览器中查看页面源码了吗?您可能必须使用
    以便浏览器在此处执行您想要执行的操作。或者,您可以使用

标签: html jsp jstl


【解决方案1】:

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

除了使用 HTML &lt;br&gt; 元素代替换行符之外,

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

并在没有&lt;c:out&gt; 的情况下打印它,就像${myData},您还可以使用HTML &lt;pre&gt; 元素来保留空白,

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

或者只是在父元素上应用 CSS white-space:pre,就像 HTML &lt;textarea&gt; 元素在内部做的一样:

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

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

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

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

【讨论】:

  • &lt;span style="white-space:pre"&gt;&lt;/span&gt; 这很好。为我节省了一些搜索时间。
  • 就我而言,我需要的是white-space:pre-line。感谢您让我知道这个属性:)
猜你喜欢
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2021-11-09
  • 1970-01-01
  • 2011-10-20
  • 2019-10-10
  • 2013-06-02
相关资源
最近更新 更多