Как использовать && в El булевых выражениях в Facelets?
У меня возникли небольшие проблемы с выяснением, как это сделать, и на El выражения в Facelets. Так что в основном у меня есть:
<h:outputText id="Prompt"
value="Fobar"
rendered="#{beanA.prompt == true && beanB.currentBase !=null}" />
но я продолжаю получать:
ошибка трассировки[строка: 69] имя объекта должно сразу следовать за'&' в ссылке на сущность.
2 ответа:
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 для замены
&&
Сand
:Search: (#\{[^\}]*)(&&)([^\}]*\}) Replace: and
вы несколько раз запускали эту замену регулярного выражения, чтобы найти все случаи, если вы используете >2 литерала в своих выражениях EL. Не забудьте заменить ведущий # На $ , если ваш синтаксис выражения EL отличается.