Определение и повторное использование переменной EL на странице JSF
Можно ли определить переменную и повторно использовать переменную позже в выражениях EL?
Например:
<h:inputText
value="#{myBean.data.something.very.long}"
rendered="#{myBean.data.something.very.long.showing}"
/>
Что я имею в виду, это что-то вроде:
<!--
somehow define a variable here like :
myVar = #{myBean.data.something.very.long}
-->
<h:inputText
value="#{myVar}"
rendered="#{myVar.showing}"
/>
Любые идеи? Спасибо!
Ответы
Ответ 1
Вы можете использовать <c:set>
для этого:
<c:set var="myVar" value="#{myBean.data.something.very.long}" scope="request" />
Это выражение EL затем будет оцениваться один раз и храниться в области запроса. Обратите внимание, что это работает только тогда, когда значение доступно во время просмотра времени сборки. Если это не так, вам нужно удалить атрибут scope
, чтобы он стал истинным "псевдонимом":
<c:set var="myVar" value="#{myBean.data.something.very.long}" />
Обратите внимание, что этот не кэширует оцениваемое значение в области запроса! Он будет пересматриваться каждый раз.
Ответ 2
Как и любой вид в MVC, страница должна быть максимально .. Если вам нужен ярлык, поместите ярлык в контроллер (@ManagedBean
или @Named
bean).
Контроллер:
@Named
public MyBean
{
public Data getData()
{
return data;
}
public Foo getFooShortcut()
{
return data.getSomething().getVery().getLong();
]
}
Вид:
<h:inputText
value="#{myBean.fooShortcut}"
rendered="#{myBean.fooShortcut.showing}"
/>