2013-01-25 42 views
6

文字列に "\ n"を追加し、sタグのtextareaを使用すると、改行が追加され、データが1行ずつ表示されます。しかし、私はcoutタグを使用すると、データが1行に表示されます。 coutタグを使って行ごとにどのように表示できますか?coutタグを使用しているときに改行が表示されない

StringBuffer sb = new StringBuffer(); 
    for (MyBean bean : beanList) { 

       sb.append((bean.getName()); 
       sb.append("\n"); 
      } 
      return sb.toString(); 

JSP

<c:out value="${myData}"/> 
+0

ブラウザのページソースを見ましたか?あなたはおそらく
を使用しなければならないので、ブラウザはあなたがここでやりたいことをやります。あるいは、

rickz

答えて

16

JSPはHTMLを生成します。 HTMLでは、改行文字ではなく、新しい行が<br>要素で表されます。さらに、平均的なHTMLソースを見ると、多くの改行文字が表示されますが、デフォルトではWebブラウザによっては解釈されません。

別に代わりに改行文字のHTML <br>要素、そう${myData}よう

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

<c:out>せずに、それを印刷を使用してから、あなたも、空白を保持するために

<pre><c:out vaule="${myData}" /></pre> 
をHTML <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> 
+0

''を使用してもよいでしょう。いくつかの検索を保存しました。 – mushfek0001

関連する問題