Объявлять и использовать переменную в JSF2 xhtml-странице
Я использую <s:set var="buttonText" value="getText('person.button.add')"/>
в JSTL для использования переменной buttonText для установки текста.
Кто-нибудь скажет мне, как это сделать в JSF EL, пожалуйста?
Вопрос задан здесь Условие IF-ELSE в форме JSF. Необходимо знать правильный подход, но сказал, чтобы задать отдельный вопрос.
Редакция:
Я уже добавил ссылку выше для подробностей, но здесь снова.
Я использую JSTL, как в проекте struts2
<s:if test="person==null || person.id==null || person.id==''">
<s:set var="buttonText" value="getText('person.button.add')"/>
</s:if>
<s:else>
<s:set var="buttonText" value="getText('person.button.edit')"/>
</s:else>
Я хочу использовать тот же подход в JSF2, но с языком выражения. Я сохраняю значение в переменной под названием buttonText
и получаю ее ниже где-то вроде #{buttonText}
. Мне нужно решить, как записать переменную в EL
и использовать ее. Надеюсь, что это понятно.
Мне нужно решение только для строки <s:set var="buttonText" value="getText('person.button.add')"/>
.
Спасибо
Ответы
Ответ 1
Вы можете использовать ui:param
В следующих случаях:
<ui:param name="buttonText" value="#{myBean.MyValue}" />
или
<ui:param name="buttonText" value="someText" />
или
<ui:param name="buttonText" value="someText#{myBean.MyValue}" />
и использовать позже, например,
<h:outputText value="#{buttonText}"/>
Другим вариантом будет использование <c:set
следующим образом
<c:set var="buttonText" value="#{myBean.MyValue}" />
Но обратите внимание, что <c:set
является тегом JSTL,
Теги JSTL запускаются во время построения представления (когда файл XHTML преобразуется в JSF)
Также вы можете прочитать этот JSTL в JSF2 Facelets... имеет смысл?