You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by Apache Wiki <wi...@apache.org> on 2006/01/17 02:46:05 UTC
[Myfaces Wiki] Update of "AccessingOneManagedBeanFromAnother" by
SimonKitching
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Myfaces Wiki" for change notification.
The following page has been changed by SimonKitching:
http://wiki.apache.org/myfaces/AccessingOneManagedBeanFromAnother
The comment on the change is:
Moved info from FAQ to its own page.
New page:
=== How can I access one Managed Bean from another? ===
There are two ways for one managed bean to access another managed bean in the same webapp:
==== Using Dependency Injection ====
In your project's faces configuration file which defines the managed beans, a managed bean
property can be declared as initialised with a reference to another managed bean:
{{{
<managed-bean>
<managed-bean-name>neededBean</managed-bean-name>
<managed-bean-class>fqn.to.NeededBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>usingBean</managed-bean-name>
<managed-bean-class>fqn.to.UsingBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>neededBean</property-name>
<value>#{neededBean}</value>
</managed-property>
</managed-bean>
}}}
The constraints are that:
* the using bean must have scope which is the same as or shorter than the needed bean
* the using bean must have a property-setter method which takes the needed bean as a parameter
==== Using Lookup ====
The following java code can be used to explicitly look up an arbitrary managed bean by name:
{{{
FacesContext facesContext = FacesContext.getCurrentInstance();
NeededBean neededBean
= (NeededBean) facesContext.getApplication()
.getVariableResolver().resolveVariable(facesContext, "neededBean");
}}}
Alternately, you can use this code to evaluate any JSF EL expression.
{{{
FacesContext facesContext = FacesContext.getCurrentInstance();
NeededBean neededBean
= (NeededBean)facesContext.getApplication()
.createValueBinding("#{neededBean}").getValue(facesContext);
}}}