Определение условной переменной в 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
)
Ответ 2
Попробуйте вместо этого использовать JSTL:
<c:set var="userCase" value="Insert" />
<c:if test="#{employee.employeesBulkInsert}">
<c:set var="userCase" value="Update" />
</c:if>
Учебник здесь: http://www.ibm.com/developerworks/java/library/j-jstl0211/index.html