有没有办法暂时保存JSF页面中的计算值? 我想在不计算两次的情况下执行以下操作:
<h:outputText value="#{complexModel.currencyAmount.currency}">
<h:outputText value="#{complexModel.currencyAmount.amount}">
我尝试过使用alias bean,但是收到一条错误,说java.lang.IllegalArgumentException - row不可用。
e.g。
<t:aliasBean id="bean" alias="#{bean}" value="#{complexModel.currencyAmount}">
<h:outputText value="#{bean.currency}">
<h:outputText value="#{bean.amount}">
</t:aliasBean>
感谢。
答案 0 :(得分:5)
两种方式(至少):
使用complexModel
的lazy-init字段。类似的东西:
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}
访问计算出的值。
答案 1 :(得分:-2)
在JSF 2.0中,您可以使用它强大的<ui:param/>
。
<ui:param name="foo" value="#{zhangsan.foo}"/>