Facelets - это технология просмотра на основе XML. &
Это специальный символ в XML , представляющий собой начало сущности , как , &
который заканчивается с ;
характером. Вам нужно либо избежать этого, что уродливо:
rendered="#{beanA.prompt == true && beanB.currentBase != null}"
или and
вместо этого использовать ключевое слово, которое предпочтительнее с точки зрения удобочитаемости и удобства обслуживания:
rendered="#{beanA.prompt == true and beanB.currentBase != null}"
Смотрите также:
Не связанное с конкретной проблемой, сравнение логических значений с логическими значениями имеет мало смысла, если выражение уже ожидает логический результат. Я бы избавился от == true
:
rendered="#{beanA.prompt and beanB.currentBase != null}"
В дополнение к ответу BalusC используйте следующий Java RegExp для замены
&&
наand
:Search: (#\{[^\}]*)(&&)([^\}]*\}) Replace: $1and$3
Вы запускали эту замену регулярного выражения несколько раз, чтобы найти все вхождения в случае, если вы используете> 2 литералов в своих выражениях EL. Не забудьте заменить начальный # на $, если синтаксис вашего выражения EL отличается.
источник