Using && in EL results in error: The entity name must immediately follow the '&' in the entity reference

后端 未结 2 2010
难免孤独
难免孤独 2021-02-04 08:19

I\'m trying to use a conditional expression in an el expression used in jsf, but it does not work.



        
相关标签:
2条回答
  • 2021-02-04 08:59

    Use and instead of &&. You simply have XML syntax error.

    0 讨论(0)
  • 2021-02-04 09:07

    You seem to be using Facelets (which is perfectly fine). It's however a XML based view technology. Everything which you write in Facelets has to be syntactically valid XML. The & is in XML a special character denoting the start of an entity like &, <, >,  , etc.

    If you would like to represent the & as-is in XML, then you'd have to replace it by &.

    <h:outputText value="#{(sel.description !=null) &amp;&amp; (sel.description !='') ? sel.description : 'Empty description'} - "/>
    

    However, that's not pretty readable, you would rather like to use the alternative EL operator and for this (see also operators in EL for an overview of all available operators in EL):

    <h:outputText value="#{(sel.description !=null) and (sel.description !='') ? sel.description : 'Empty description'} - "/>
    

    All with all, this is in turn pretty clumsy as there's a simpler empty keyword for the purpose of testing both nullness and emptiness. This can in your particular case be used as:

    <h:outputText value="#{not empty sel.description ? sel.description : 'Empty description'} - "/>
    

    or

    <h:outputText value="#{!empty sel.description ? sel.description : 'Empty description'} - "/>
    

    or

    <h:outputText value="#{empty sel.description ? 'Empty description' : sel.description} - "/>
    
    0 讨论(0)
提交回复
热议问题