JSF临时变量

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> 

谢谢。

两种方式(至少):

  1. 使用您complexModel的延迟实例字段。是这样的:

    private Currency currencyAmount; 
    public Currency getCurrencyAmount() { 
        if (currencyAmount == null) { 
         currencyAmount = calculateCurrencyAmount(); 
        } 
        return currencyAmount; 
    } 
    
  2. 使用JSTL <c:set>标签:

(命名空间第一)

xmlns:c="http://java.sun.com/jstl/core" 

然后

<c:set var="varName" value="#{complexModel.currencyAmount}" /> 

然后计算出的值会根据通过#{varName}可以确定。

+0

这是否适用于JSF 1.1? – 2010-02-11 14:12:45

+0

第一个选项 - 是的。第二 - 我不知道。 一个建议 - 当提出有关框架过时版本的问题时,请明确提及。 – Bozho 2010-02-11 14:16:36

+0

第一个选项并不适合,因为我输出数据表中的值,所以该值取决于行...我可以有一个地图,但它变得混乱,因为这需要清除时刷新等。 – 2010-02-11 14:26:21

在JSF 2.0中,您可以使用<ui:param/>,它功能强大。

<ui:param name="foo" value="#{zhangsan.foo}"/> 
+0

阅读部分“ vs

+0

谢谢,我学习了很多。 – Jallen 2016-01-17 15:03:08