2012-03-30 18 views
5

Estoy usando \ n en mi bean Java y la salida de la variable en la consola se muestra correctamente. Mientras que al buscar este valor de bean a JSF \ n parece no funcionar ....... alguien me puede sugerir cómo puedo hacer \ n trabajar en JSF.cómo hacer n trabajar en <h: inputTextarea>

Respuesta

16

La manera más simple sería aplicar CSS white-space: pre en el elemento primario que contiene el texto del cual desea conservar los caracteres de nueva línea \n. Teniendo en cuenta esta clase de estilo CSS:

.preformatted { 
    white-space: pre; 
} 

Se podría aplicar esto como sigue:

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

o

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

o

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

etc.

Esta propiedad de estilo es, por cierto, también exactamente lo que usa el elemento <textarea> de forma predeterminada. También puede utilizarlo y hacerlo no editable configurando disabled="true" o readonly="true".

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

Por supuesto, puede también reemplazar todas las apariciones de \n por el <br/> elemento HTML. De esta forma puede mostrarlo en un elemento que no usa white-space: pre y/o no es un elemento <textarea>. Una de las formas es usar fn:replace().

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

Esta es la OMI solamente feo que white-space: pre.

2

Reemplace todas las ocurrencias de \n con </br> antes de mostrarlo.

5

Debe reemplazar todo \ n con <br/> antes de enviar el valor a su <h:inputTextarea>.

Html utiliza <br/> para el salto de línea y no el \ n like java.

Además, debe agregar escape="false" a su <h:outputText (casi seguro ...).

1

Al examinar el texto grabado en mi base de datos a través de <h:inputTextarea> encontré que los caracteres especiales se estaban conservando.

Por lo tanto, después de investigar lo que pensé que era un oscuro arte de la persistencia, me gustó que la pantalla predeterminada del componente JSF era en realidad lo que me decepcionó.

Encuentro que agregar white-space: pre-wrap; a <p> en mi hoja de estilos solucionó este problema para mis etiquetas <h:outputText> que se suministraban con texto de un pojo JPA.

En mi caso, necesitaba pre-wrap en lugar de pre porque pre estaba envolviendo por carácter, en lugar de palabra.

Espero que esto ayude a alguien!

Cuestiones relacionadas