2012-03-30 35 views
5

Tôi đang sử dụng \ n trong đậu java và đầu ra của biến trong bảng điều khiển được hiển thị chính xác. Trong khi tìm nạp giá trị này từ bean sang JSF \ n có vẻ không hoạt động ....... thì bất kỳ ai cũng có thể gợi ý cho tôi làm cách nào để tôi có thể làm việc trong JSF.cách làm n làm việc trong <h: inputTextarea>

Trả lời

16

Cách đơn giản nhất là áp dụng CSS white-space: pre trên phần tử gốc chứa văn bản bạn muốn giữ dòng mới \n ký tự. Với này kiểu CSS class:

.preformatted { 
    white-space: pre; 
} 

Bạn có thể áp dụng điều này như sau:

<div class="preformatted">#{bean.text}</div> 

hoặc

<h:panelGroup layout="block" styleClass="preformatted">#{bean.text}</h:panelGroup> 

hoặc

<h:outputText value="#{bean.text}" styleClass="preformatted" /> 

, vv

012.

Thuộc tính kiểu dáng này cũng chính xác theo cách mà phần tử <textarea> được sử dụng theo mặc định. Bạn cũng có thể sử dụng nó và làm cho nó không thể chỉnh sửa bằng cách đặt disabled="true" hoặc readonly="true".

<h:inputTextarea value="#{bean.text}" disabled="true" /> 

Bạn có thể dĩ nhiên cũng thay thế tất cả các lần xuất hiện của \n bởi các phần tử HTML <br/>. Bằng cách này, bạn có thể hiển thị nó trong một phần tử không sử dụng white-space: pre và/hoặc không phải là một phần tử <textarea>. Một trong những cách đang sử dụng fn:replace().

<h:outputText value="#{fn:replace(bean.text,'\\n','&lt;br/&gt;')}" escape="false" /> 

Đây là IMO chỉ xấu hơn white-space: pre.

2

Thay thế tất cả các lần xuất hiện của \n bằng </br> trước khi hiển thị.

5

Bạn nên thay thế tất cả \ n bằng <br/> trước khi gửi giá trị đến <h:inputTextarea>.

Sử dụng Html <br/> để ngắt dòng và không phải \ n như java.

Ngoài ra, bạn nên thêm escape="false" vào số <h:outputText (gần như chắc chắn ...).

1

Khi xem văn bản được ghi trong cơ sở dữ liệu của tôi qua số <h:inputTextarea> Tôi thấy rằng các ký tự đặc biệt đã được duy trì. Vì vậy, sau khi điều tra những gì tôi nghĩ là một số nghệ thuật đen tối của sự kiên trì, tôi đánh giá cao rằng màn hình mặc định của thành phần JSF là trong thực tế những gì đã cho phép tôi xuống.

Tôi nhanh chóng thấy rằng việc thêm white-space: pre-wrap; vào <p> trên biểu định kiểu của tôi đã khắc phục sự cố này cho các thẻ <h:outputText> của mình đang được cung cấp văn bản từ một bài đăng JPA.

Trong trường hợp của tôi, tôi cần pre-wrap thay vì prepre được đóng gói theo ký tự thay vì theo từ.

Hy vọng điều này sẽ giúp ai đó!

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