[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
不建议这么做...执行速度会降低...
|