2010-07-26 23 views
38

Ich muss einen Zeilenumbruch mit outputText rendern, so dass ich die rendered zugeschrieben nutzen kann. Ich habe versucht,Wie wird ein Zeilenumbruch mit outputText angezeigt?

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

aber es erzeugte Ausnahme

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

Antwort

87

Das ist in der Tat nicht gültig seit Facelets, weil es in XML syntaktisch ungültig ist. Sie müssten die XML-Sonderzeichen wie <, > und so weiter manuell entschlüsseln.

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

Sie können jedoch emittieren nur die <br/> in Schablonentext- ohne die Notwendigkeit eines <h:outputText>.

<br/> 

Um es bedingt zu rendern, wickeln Sie es zum Beispiel in eine <ui:fragment> ein.

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

A <h:panelGroup> gilt auch, da es nichts mit dem HTML ohnehin nicht emittieren.

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

wie würden Sie dies tun, wenn dynamisch eine 'HtmlOutputText' in ein Hinzufügen verwaltete Bohne? Ich habe versucht 'HtmlOutputText linebreak = new HtmlOutputText(); lineBreak.setValue (" br/>" und "
"); '(offensichtlich nicht zur gleichen Zeit wie diese), aber keiner funktionierte, sie gaben einfach den eingegebenen Text aus, keine Pause – Austin

+1

@Austin: Anscheinend haben Sie vergessen, ' setEscape (falsch) '. – BalusC

+0

sicher, du brauchst keine neuen Bücher? =) – Austin

0

Sie können versuchen, die "<br />" in einem Ressourcenbündel setzen und dann den Wert aus diesem Ressourcenpaket erhalten.

3

JSF PAGE

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

Flucht sollte false sein und die Bohne Getter Methode schreiben wie folgt

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