2010-07-26 78 views
38

Necesito hacer un salto de línea usando outputText para poder utilizar el rendered atribuido. Probé¿Cómo mostrar un salto de línea con outputText?

<h:outputText value="<br/>" escape="false" /> 

pero generó excepción

The value of attribute "value" associated with an element type "null" must not contain the '<' character. 

Respuesta

87

Eso no es válido desde Facelets porque es sintácticamente inválido en XML. Tendría que escaparse manualmente de los caracteres especiales XML como <, >, etc.

<h:outputText value="&lt;br/&gt;" escape="false" /> 

Puede sin embargo, sólo emitir la <br/> en texto de la plantilla, sin la necesidad de un <h:outputText>.

<br/> 

para que sea condicional, lo envuelve en, por ejemplo, un <ui:fragment>.

<ui:fragment rendered="#{bean.rendered}"><br /></ui:fragment> 

Un <h:panelGroup> también es válida, ya que no emite nada al HTML de todos modos.

<h:panelGroup rendered="#{bean.rendered}"><br /></h:panelGroup> 
+0

¿cómo hacer esto al agregar dinámicamente un 'HtmlOutputText' en una ¿Bean administrado? Intenté 'HtmlOutputText linebreak = new HtmlOutputText(); lineBreak.setValue ("< br/>" y "
"); '(obviamente no al mismo tiempo) pero ninguno de los dos funcionó, simplemente imprimieron el texto ingresado, no un salto – Austin

+1

@Austin: Aparentemente se olvidó de llamar' setEscape (falso) '. – BalusC

+0

¿Seguro que no necesita ningún libro nuevo? =) – Austin

0

Usted puede intentar poner la "<br />" dentro de un paquete de recursos y luego obtener el valor de ese paquete de recursos.

3

PÁGINA JSF

<h:outputText value="#{car.crg}" escape="false" style="white-space: pre-wrap;word-wrap: break-word; " /> 

de escape debe ser false y escribir el grano Getter método de la siguiente manera

public String getCrg() { 
     return crg.replace("<br/>", "&lt;br /&gt;"); 
     //return crg; 
    } 
Cuestiones relacionadas