2013-01-25 6 views
6

Dołączyłem "\ n" do łańcucha znaków i podczas korzystania z textarea znacznika s dodano znak nowej linii i dane są wyświetlane wiersz po wierszu. Ale kiedy używam tagu c out, dane są wyświetlane w jednym wierszu. Jak mogę wyświetlać linię po linii używając tagu c out?nowa linia nie pojawia się, gdy używany jest znacznik 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}"/> 
+0

Czy spojrzałeś na źródło strony w przeglądarce? Prawdopodobnie będziesz musiał użyć
, aby przeglądarka zrobiła to, co chcesz tutaj zrobić. Alternatywnie możesz użyć

rickz

Odpowiedz

16

JSP produkuje HTML. W HTML nowe linie mają być reprezentowane przez element <br>, a nie przez znak wprowadzany liniowo. Co więcej, jeśli spojrzysz na przeciętne źródło HTML, zobaczysz wiele znaków z linii, ale domyślnie nie są one interpretowane przez przeglądarkę internetową.

Oprócz przy użyciu elementu HTML <br> zamiast znakiem końca wiersza,

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

i drukowanie bez <c:out> jak tak ${myData}, można również używać HTML <pre> elementu, aby zachować odstępy,

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

lub po prostu zastosuj CSS white-space:pre na elemencie nadrzędnym, dokładnie tak, jak element HTML <textarea> wykonując wewnętrznie:

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

(UWAGA: class bardziej zalecane niż style, powyższe jest jedynie przykładem Kickoff)

Te ostatnie dwie metody są zalecane. Kod HTML nie należy do klas Java. Należy do plików JSP. Co więcej, prawdopodobnie powinieneś używać JSTL <c:forEach> do iterowania kolekcji zamiast całego kodu Java.

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

'' to było dobre. Uratował mnie trochę wyszukiwania. – mushfek0001