Вы не можете вкладывать выражения EL.Я предлагаю переписать выражение следующим образом, чтобы условие было делегировано JavaScript:
onclick="if (#{searchBackingBean.showLoginPanel}) #{rich:component('loginPopup')}.show();"
(обратите внимание, что я удалил лишнее сравнение == true
, поскольку это не имеет смысла, поскольку метод возвращает/ печатает уже логическое значение)
Обратите внимание, что это работает только в компонентах <rich:xxx>
и <a4j:xxx>
, поскольку они усовершенствовали атрибуты on*
для повторной оценки выражения EL в обратных передачах.Стандартные компоненты JSF <h:xxx>
этого не делают.Вам нужно обойти это с атрибутом rendered
:
<h:commandButton>
<f:ajax render="script" />
</h:commandButton>
<h:panelGroup id="script">
<h:panelGroup rendered="#{searchBackingBean.showLoginPanel}">
<script>#{rich:component('loginPopup')}.show();</script>
</h:panelGroup>
</h:panelGroup>