[Ajax4JSF] JSF中的ManagedBean的实例如何获取?

yanquan 2007-07-12
我现在在做一个订单添加的页面,
订单中有订单信息还有订单的货物信息。
货物信息是在订单的类里面的一个List来存储的。

现在需要在一个ManagedBean1里面获取另外一个ManagedBean2的对象然后使用set方法对其的List成员添加引用。

告诉我怎么获取MangedBean2的实例呢?
Javabengou 2007-07-13
说的不是很明白,你说的managedbean1和managedbean2指的的是哪个?
likehibernate 2007-07-19
楼主,你的意思是不是在一个managedBean取另一个managedBean的实例是吧?
但是首先你要确认这个被调用的bean的实例是否存在,如果它的scope是request的话就不存在了,如果是session的话,那么在faceContext实例中可以获得一个sessionMap,然后从sessionMap中取得,这个你自己去找找吧,网上很多!
当然如果scope是request没有实例我们可以自己创建一个实例:
FacesContext context =FacesContext.getCurrentInstance();
  ValueBinding binding =
      context.getApplication().createValueBinding("#{glBranchFormulaBB}");
  BranchFormulaBB formula = (BranchFormulaBB) binding.getValue(context);

这里的formula就是你所指的ManagedBean2的实例了。
chizengkun 2008-04-30
也可以直接引用的,在faces-conifg.xml配置中支持这样的,直接这样写就行啦
<managed-bean-name>regBean</managed-bean-name>
<managed-bean-class>com.anyi.module.managedbean.RegisterBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>loginUser</property-name>
<value>#{loginUserService}</value>
</managed-property>
....
后面的代码省啦,在registerBean中实际引用loginUser,但loginUser是一个Spring管理的类,引用其它的managedbean是一样的,直接这样添加相应的属性就可以啦
zch198627 2008-05-01
ltian 写道
从一个managedbean去访问另一个managedbean,这样想法本身就是错误的。因为managedbean的生命周期不是你所能控制的,是由JSF FrameWORK控制的。

 

manageBean的生命周期可以在faces-config.xml文件中配置啊。能够在一个manageBean中访问另一个manageBean,但是被访问的manageBean的范围不能小于当前的manageBean。访问方法如下:

Application application=context.getApplication();

ManageBeanPropertyType ManageBeanProperty=(ManageBeanPropertyType)application.evaluateValueExpressionGet(context,"#{ManageBean.ManageBeanProperty}",ManageBeanPropertyType.class);

 

elfer 2008-05-03
我是这么用的
FacesContext ctx = FacesContext.getCurrentInstance();
VariableResolver variableResolver =ctx.getApplication().getVariableResolver(); 
MessageBean mb = (MessageBean) variableResolver.resolveVariable(ctx, "messageBean");
terryzhou 2008-05-04
不建议这么做...执行速度会降低...


Global site tag (gtag.js) - Google Analytics