2010-07-26 3 views
38

J'ai besoin de rendre un saut de ligne en utilisant outputText afin que je puisse utiliser le rendered attribué. J'ai essayéComment afficher un saut de ligne avec outputText?

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

mais il a généré une exception

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

Répondre

87

Cela n'est en effet pas valide depuis Facelets car il est syntaxiquement invalide en XML. Vous auriez besoin d'échapper manuellement les caractères spéciaux XML comme <, > et ainsi de suite.

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

Vous pouvez cependant simplement émettre le <br/> dans le texte du modèle sans la nécessité d'un <h:outputText>.

<br/> 

Pour le rendre conditionnel, l'enrouler par exemple dans un <ui:fragment>.

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

Un <h:panelGroup> est également valable car elle ne dégage rien au HTML de toute façon.

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

comment voulez-vous faire lorsque vous ajoutez dynamiquement un 'HtmlOutputText' dans un haricot géré? J'ai essayé 'HtmlOutputText linebreak = new HtmlOutputText(); lineBreak.setValue ("< br/>" et "
"); '(évidemment pas en même temps comme ça) mais ni travaillé, ils ont simplement sorti le texte entré, pas une pause – Austin

+1

@Austin: Apparemment, vous avez oublié d'appeler' setEscape (faux) '. – BalusC

+0

sûr que vous n'avez pas besoin de nouveaux livres? =) – Austin

0

Vous pouvez essayer de mettre l'"<br />" l'intérieur d'un ensemble de ressources et obtenir la valeur de ce groupe de ressources.

3

JSF PAGE

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

évasion devrait être false et écrire la méthode haricot Getter comme suit

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