2013-01-25 37 views
6

Tôi nối "\ n" vào chuỗi và khi sử dụng văn bản thẻ s, dòng mới đã được nối và dữ liệu được hiển thị từng dòng. Nhưng khi tôi sử dụng thẻ c ra, dữ liệu được hiển thị trong một dòng. Làm thế nào tôi có thể hiển thị từng dòng bằng cách sử dụng thẻ c?dòng mới không xuất hiện khi sử dụng thẻ c

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

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

JSP

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

Bạn đã xem nguồn trang trong trình duyệt chưa? Bạn có thể sẽ phải sử dụng
để trình duyệt sẽ làm những gì bạn muốn làm ở đây. Hoặc bạn có thể sử dụng

rickz

Trả lời

16

JSP tạo HTML. Trong HTML, các dòng mới sẽ được biểu diễn bởi phần tử <br>, không phải bởi ký tự linefeed. Thậm chí nhiều hơn, nếu bạn nhìn vào nguồn HTML trung bình, bạn sẽ thấy nhiều ký tự linefeed, nhưng chúng theo mặc định không được trình duyệt web giải thích chút nào.

Ngoài việc sử dụng các phần tử HTML <br> thay vì nhân vật linefeed,

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

và in nó mà không <c:out> như vậy ${myData}, bạn cũng có thể sử dụng HTML <pre> yếu tố để duy trì khoảng trắng,

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

hoặc chỉ áp dụng CSS white-space:pre trên phần tử gốc, chính xác như phần tử HTML <textarea> đang hoạt động nội bộ:

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

(lưu ý: một class nhiều đề nghị hơn style, ở trên chỉ là một ví dụ Kickoff)

Hai phương pháp sau được khuyến khích. Mã HTML không thuộc về các lớp Java. Nó thuộc về các tệp JSP. Thậm chí nhiều hơn, bạn có thể thực sự đang sử dụng JSTL <c:forEach> để lặp qua bộ sưu tập thay vì toàn bộ đoạn mã Java đó.

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

'' đó là tốt. Đã lưu cho tôi một số tìm kiếm. – mushfek0001

Các vấn đề liên quan