JSF临时变量
问题描述:
有没有办法将计算值临时保存在JSF页面中? 我要做到以下几点不计算两次:JSF临时变量
<h:outputText value="#{complexModel.currencyAmount.currency}">
<h:outputText value="#{complexModel.currencyAmount.amount}">
我使用别名豆尝试,但我得到一个错误说java.lang.IllegalArgumentException异常 - 行不可用。
例如
<t:aliasBean id="bean" alias="#{bean}" value="#{complexModel.currencyAmount}">
<h:outputText value="#{bean.currency}">
<h:outputText value="#{bean.amount}">
</t:aliasBean>
谢谢。
答
两种方式(至少):
-
使用您
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}"/>
+0
阅读部分“
+0
谢谢,我学习了很多。 – Jallen 2016-01-17 15:03:08
这是否适用于JSF 1.1? – 2010-02-11 14:12:45
第一个选项 - 是的。第二 - 我不知道。 一个建议 - 当提出有关框架过时版本的问题时,请明确提及。 – Bozho 2010-02-11 14:16:36
第一个选项并不适合,因为我输出数据表中的值,所以该值取决于行...我可以有一个地图,但它变得混乱,因为这需要清除时刷新等。 – 2010-02-11 14:26:21