Reputation: 21981
Is there a way to temporarily save the value of calcuation in a JSF page? I want to do the following without calculating twice:
<h:outputText value="#{complexModel.currencyAmount.currency}">
<h:outputText value="#{complexModel.currencyAmount.amount}">
I've tried using the alias bean but I get an error saying java.lang.IllegalArgumentException - row is unavailable.
e.g.
<t:aliasBean id="bean" alias="#{bean}" value="#{complexModel.currencyAmount}">
<h:outputText value="#{bean.currency}">
<h:outputText value="#{bean.amount}">
</t:aliasBean>
Thanks.
Upvotes: 3
Views: 14551
Reputation: 1
In JSF 2.0,you can use <ui:param/>
which it's powerful.
<ui:param name="foo" value="#{zhangsan.foo}"/>
Upvotes: -2
Reputation: 597106
Two ways (at least):
Using lazy-init field of your complexModel
. something like:
private Currency currencyAmount;
public Currency getCurrencyAmount() {
if (currencyAmount == null) {
currencyAmount = calculateCurrencyAmount();
}
return currencyAmount;
}
Using the JSTL <c:set>
tag:
(the namespace first)
xmlns:c="http://java.sun.com/jstl/core"
then
<c:set var="varName" value="#{complexModel.currencyAmount}" />
And then the calculated value will be accessible through #{varName}
.
Upvotes: 6