Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSF Temporary Variable

Tags:

jsf

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.

like image 927
DD. Avatar asked Aug 18 '26 04:08

DD.


1 Answers

Two ways (at least):

  1. Using lazy-init field of your complexModel. something like:

    private Currency currencyAmount;
    public Currency getCurrencyAmount() {
        if (currencyAmount == null) {
            currencyAmount = calculateCurrencyAmount();
        }
        return currencyAmount;
    }
    
  2. 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}.

like image 84
Bozho Avatar answered Aug 21 '26 22:08

Bozho