Определение условной переменной в JSF - PullRequest
7 голосов
/ 06 декабря 2011

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

<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>

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

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

Ответы [ 2 ]

13 голосов
/ 06 декабря 2011

<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 голосов
/ 06 декабря 2011

Попробуйте вместо этого использовать 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

...