2012-03-30 21 views
5

Używam \ n w moim komponencie bean Java, a wynik zmiennej w konsoli jest wyświetlany poprawnie. Podczas gdy pobieranie tej wartości z komponentu bean do JSF \ n wydaje się niedziałać ....... czy ktoś może mi zasugerować, w jaki sposób mogę \ n pracować z JSF.jak wykonać n pracę w <h: inputTextarea>

Odpowiedz

16

Najprostszym sposobem jest zastosowanie CSS white-space: pre w elemencie nadrzędnym, w którym znajduje się tekst, którego znaki nowej linii mają zostać zachowane: \n. Biorąc pod uwagę to klasa stylu CSS:

.preformatted { 
    white-space: pre; 
} 

Można zastosować to w następujący sposób:

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

lub

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

lub

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

itp

Ta właściwość stylu jest przy okazji również tym, czym jest domyślnie element <textarea>. Można również użyć go i uczynić go nieredytowalnym, ustawiając disabled="true" lub readonly="true".

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

Można oczywiście również zastąpić wszystkie wystąpienia \n przez HTML <br/> elementu. W ten sposób możesz wyświetlić go w elemencie, który nie używa elementu white-space: pre i/lub nie jest elementem <textarea>. Jednym ze sposobów jest użycie fn:replace().

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

To jest tylko IMO brzydsza niż white-space: pre.

2

Wymień wszystkie wystąpienia \n na </br> przed wyświetleniem.

5

Powinieneś wymienić wszystkie \ n na <br/>, zanim wyślesz wartość do swojego <h:inputTextarea>.

Html używa <br/> do podziału linii, a nie do \ n jak java.

Ponadto, należy dodać escape="false" do swojego <h:outputText (prawie na pewno ...).

1

Podczas wyszukiwania tekstu zapisanego w mojej bazie danych za pomocą <h:inputTextarea> odkryłem, że znaki specjalne były utrwalone.

Po zbadaniu tego, co uważałem za mroczną sztukę wytrwałości, doceniam fakt, że domyślne wyświetlenie komponentu JSF było w rzeczywistości tym, co mnie zawodziło.

Wkrótce okazało się, że dodanie white-space: pre-wrap; do <p> na moim arkuszu stylów rozwiązało ten problem dla moich tagów <h:outputText>, które zostały dostarczone z tekstem z poo JPA.

W moim przypadku potrzebowałem pre-wrap zamiast pre, ponieważ pre było zawijane przez znak, a nie przez słowo.

Mam nadzieję, że to pomoże komuś!

Powiązane problemy