6

文字列に「\n」を追加しました。sタグtextareaを使用すると、改行が追加され、データが1行ずつ表示されます。しかし、c outタグを使用すると、データが1行に表示されます。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 を生成します。<br>HTML では、改行は改行文字ではなく要素で表されます。さらに、平均的な HTML ソースを見ると、多くの改行文字が表示されますが、デフォルトでは Web ブラウザーによってまったく解釈されません。

<br>改行文字の代わりにHTML 要素を使用する以外に、

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

<c:out>そうせずに印刷すると${myData}、HTML<pre>要素を使用して空白を保持することもできます。

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

または、HTML要素が内部で行っているwhite-space:preのとまったく同じように、親要素にCSS を適用するだけです。<textarea>

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

(注: aclassは よりも推奨さstyleれます。上記は単なるキックオフの例です)

後者の 2 つのアプローチをお勧めします。HTML コードは Java クラスに属しません。JSP ファイルに属します。<c:forEach>さらに、実際には、Java コード全体ではなく、JSTL を使用してコレクションを反復処理する必要があります。

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