You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by "r.stranders" <r....@gmail.com> on 2007/03/28 12:09:30 UTC
c:set creates alias?
Hi,
I ran into the following problem. I've got a map with some information I
would like to use in my page. Creating this map is an expensive operation
that should only be performed once. Therefore, I thought I could use the
<c:set> jstl tag. However, each time I access the variable, the method is
called again. In the example below for instance, the method
"rolesOfSelectedUserMap" is called twice.
<c:set var="rolesOfUser"
value="#{userController.rolesOfSelectedUserMap}" />
<h:outputText value="rolesOfUser['admin']" />
<h:outputText value="rolesOfUser['user']" />
It seems that <c:set> only creates an alias for the operation, and does not
actually set the variable "rolesOfUser" to the correct value. Any ideas how
to fix this (with or without c;set)?
--
View this message in context: http://www.nabble.com/c%3Aset-creates-alias--tf3479258.html#a9710152
Sent from the MyFaces - Users mailing list archive at Nabble.com.
Re: c:set creates alias?
Posted by Mike Kienenberger <mk...@gmail.com>.
Normally, you'd cache the map in a backing bean. Make the scope of
the bean equal of the wanted scope of the map. Ie, if userController
is request-scoped, the map would be created once per request. If
your particular userController has a different scope than the map,
then create a rolesOfSelectedUser backing bean so you can control the
scope.
private Map rolesOfSelectedUserMap = null;
public Map getRolesOfSelectedUserMap()
{
if (null == rolesOfSelectedUserMap) { // create map }
return rolesOfSelectedUserMap ;
}
On 3/28/07, r.stranders <r....@gmail.com> wrote:
>
> Hi,
>
> I ran into the following problem. I've got a map with some information I
> would like to use in my page. Creating this map is an expensive operation
> that should only be performed once. Therefore, I thought I could use the
> <c:set> jstl tag. However, each time I access the variable, the method is
> called again. In the example below for instance, the method
> "rolesOfSelectedUserMap" is called twice.
>
> <c:set var="rolesOfUser"
> value="#{userController.rolesOfSelectedUserMap}" />
> <h:outputText value="rolesOfUser['admin']" />
> <h:outputText value="rolesOfUser['user']" />
>
> It seems that <c:set> only creates an alias for the operation, and does not
> actually set the variable "rolesOfUser" to the correct value. Any ideas how
> to fix this (with or without c;set)?
> --
> View this message in context: http://www.nabble.com/c%3Aset-creates-alias--tf3479258.html#a9710152
> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>
>