How to use && in EL boolean expressions in Facelets?

前端 未结 2 1296
终归单人心
终归单人心 2021-01-30 12:18

I am having a little trouble figuring out how to do and\'s on EL expressions in Facelets. So basically I have:



        
相关标签:
2条回答
  • 2021-01-30 12:47

    In addition to the answer of BalusC, use the following Java RegExp to replace && with and:

    Search:  (#\{[^\}]*)(&&)([^\}]*\})
    Replace: $1and$3
    

    You have run this regular expression replacement multiple times to find all occurences in case you are using >2 literals in your EL expressions. Mind to replace the leading # by $ if your EL expression syntax differs.

    0 讨论(0)
  • 2021-01-30 12:59

    Facelets is a XML based view technology. The & is a special character in XML representing the start of an entity like & which ends with the ; character. You'd need to either escape it, which is ugly:

    rendered="#{beanA.prompt == true && beanB.currentBase != null}"
    

    or to use the and keyword instead, which is preferred as to readability and maintainability:

    rendered="#{beanA.prompt == true and beanB.currentBase != null}"
    

    See also:

    • Java EE 6 tutorial - Operators in EL

    Unrelated to the concrete problem, comparing booleans with booleans makes little sense when the expression expects a boolean outcome already. I'd get rid of == true:

    rendered="#{beanA.prompt and beanB.currentBase != null}"
    
    0 讨论(0)
提交回复
热议问题