Определение условной переменной в JSF

Я хочу изменить значение переменной на основе условия поэтому я попробовал следующее:

<h:head>

    <ui:param name="userCase" value="Insert" />

    <ui:fragment rendered="#{employee.employeesBulkInsert==false}">
       <ui:param name="userCase" value="Update" />
    </ui:fragment>

       <title>#{userCase} Employee </title>

</h:head>

но он не работает в случае обновления, он показывает пустую строку, любые идеи, почему?

Я знаю, что есть другие решения, такие как определение переменной в резервной копии bean, или создание условного ui-фрагмента в теге заголовка напрямую, но я хочу знать, почему вышеуказанное не работает, пожалуйста, сообщите, спасибо.

Ответы

Ответ 1

<ui:fragment> - это тег рендеринга времени, тогда как <ui:param> является обработчиком тегов (обработчики тегов легко распознаются отсутствием атрибута rendered). Поэтому, когда представление создается, <ui:param> устанавливается независимо от результата <ui:fragment>. Атрибут rendered <ui:fragment> оценивается только тогда, когда уже созданное представление должно быть отображено.

Вместо этого вы хотите выполнить условие с помощью обработчика тегов, например JSTL <c:if>.

<ui:param name="userCase" value="Insert" />

<c:if test="#{not employee.employeesBulkInsert}">
    <ui:param name="userCase" value="Update" />
</c:if>

(обратите внимание, что я удалил ненужное логическое сравнение ==false)