Объявлять и использовать переменную в 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... имеет смысл?