JSF临时变量

DD.*_*DD. 2 jsf

有没有办法暂时保存JSF页面中的计算值?我想在不计算两次的情况下执行以下操作:

<h:outputText value="#{complexModel.currencyAmount.currency}">
<h:outputText value="#{complexModel.currencyAmount.amount}">
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用别名bean但是我收到一个错误,说java.lang.IllegalArgumentException - 行不可用.

例如

<t:aliasBean id="bean" alias="#{bean}" value="#{complexModel.currencyAmount}">
  <h:outputText value="#{bean.currency}">
  <h:outputText value="#{bean.amount}">
</t:aliasBean>
Run Code Online (Sandbox Code Playgroud)

谢谢.

Boz*_*zho 6

两种方式(至少):

  1. 使用你的lazy-init字段complexModel.就像是:

    private Currency currencyAmount;
    public Currency getCurrencyAmount() {
        if (currencyAmount == null) {
            currencyAmount = calculateCurrencyAmount();
        }
        return currencyAmount;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用JSTL <c:set>标记:

(名称空间优先)

xmlns:c="http://java.sun.com/jstl/core"
Run Code Online (Sandbox Code Playgroud)

然后

<c:set var="varName" value="#{complexModel.currencyAmount}" />
Run Code Online (Sandbox Code Playgroud)

然后可以通过获得计算出的值#{varName}.