Временная переменная JSF
Есть ли способ временно сохранить значение вычисления на странице JSF?
Я хочу сделать следующее, не вычисляя дважды:
<h:outputText value="#{complexModel.currencyAmount.currency}">
<h:outputText value="#{complexModel.currencyAmount.amount}">
Я пытался использовать псевдоним bean, но я получаю ошибку, говоря java.яз..IllegalArgumentException-строка недоступна.
Например
<t:aliasBean id="bean" alias="#{bean}" value="#{complexModel.currencyAmount}">
<h:outputText value="#{bean.currency}">
<h:outputText value="#{bean.amount}">
</t:aliasBean>
Спасибо.
2 ответов:
Два способа (по крайней мере):
Использование отложенной инициализации поле
complexModel. что-то вроде:private Currency currencyAmount; public Currency getCurrencyAmount() { if (currencyAmount == null) { currencyAmount = calculateCurrencyAmount(); } return currencyAmount; }Использование тега JSTL
<c:set>:(сначала пространство имен)
xmlns:c="http://java.sun.com/jstl/core"Затем
<c:set var="varName" value="#{complexModel.currencyAmount}" />И тогда вычисленное значение будет доступно через
#{varName}.
В JSF 2.0 вы можете использовать
<ui:param/>, который является мощным.<ui:param name="foo" value="#{zhangsan.foo}"/>
Comments