Временная переменная 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>


Спасибо.

551   2  
jsf

2 ответов:

Два способа (по крайней мере):

  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}.

В JSF 2.0 вы можете использовать <ui:param/>, который является мощным.

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

Comments

    Ничего не найдено.