JSTL-теги и JSF-теги не работают синхронно, как вы ожидаете от кодирования.Теги JSTL выполняются во время построения представления, а теги JSF выполняются во время визуализации представления.Вы можете визуализировать это следующим образом: JSTL сначала работает сверху вниз, а затем передает сгенерированный результат (без каких-либо тегов JSTL!) В JSF, который, в свою очередь, снова запускается сверху вниз, чтобы создать HTML для веб-браузера.
Я понимаю, что #{pluginSummary}
определяется как var
данных.В момент запуска JSTL эта переменная недоступна, поэтому в этот момент она всегда равна null
.
Вам нужно использовать теги / атрибуты JSF.В данном конкретном случае вы хотите использовать вместо этого атрибут JSF rendered
.
<h:outputText value="#{pluginSummary.pluginid}" rendered="#{not pluginSummary.linkEnabled}" />
<h:outputText value="#{texts[pluginSummary.pluginid]}" rendered="#{pluginSummary.linkEnabled}"/>
(обратите внимание, что я также изменил вызов метода на свойство, поскольку это более понятно, поскольку вам не нужнопередать любые аргументы)