Search code examples
jsfjsf-2line-breaks

How to display a line break with outputText?


I need to render a line break using outputText so that I can utilize the rendered attributed. I tried

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

but it generated exception

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

Solution

  • That's indeed not valid since Facelets because it's syntactically invalid in XML. You'd need to manually escape the XML special characters like <, > and so on.

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

    You can however just emit the <br/> in template text without the need for a <h:outputText>.

    <br/>
    

    To render it conditionally, wrap it in for example a <ui:fragment>.

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

    A <h:panelGroup> is also valid as it doesn't emit anything to the HTML anyway.

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