[英]ManagedBean accessing another ManagedBean
我可能真的很接近解决方案,但是我是JSF的新手,我看不到我的错误。 我有第一个SessionScoped托管Bean,代表业务信息(地址,网站等)
@Named(value = "businessController")
@SessionScoped
public class BusinessController implements Serializable {
private Business current;
@EJB private BusinessFacade ejbFacade;
....
我有第二个SessionScoped托管Bean,它代表登录的用户
@Named(value = "loginController")
@SessionScoped
public class LoginController implements Serializable {
private Login current;
@EJB
private LoginFacade ejbFacade;
@ManagedProperty(value="#{businessController}")
private BusinessController businessController;
public BusinessController getBusinessController() {
return businessController;
}
public void setBusinessController(BusinessController businessController) {
this.businessController = businessController;
}
当用户登录时,我从loginController设置当前属性,取决于这个当前用户,我想从businessController设置业务属性:
businessController.setCurrent(current.getBusiness());
我的问题是,businessController属性为null!
我使用NetBeans 7.0.1和GlassFish 3.1在调试模式下,可以看到带有值的viewId变量
>No current context (stack frame)<
不幸的是,它对我没有任何影响。
任何帮助,将不胜感激谢谢
您正在将JSF托管bean与CDI托管bean混合在一起。
您的BusinessController用CDI注释@Named
注释,但是注入了@ManagedProperty
注释(来自JSF)。 CDI管理的bean需要使用@Inject
注入。 在这种情况下,不需要吸气剂或吸气剂。 如果您倾向于使用CDI,请确保导入正确的@SessionScoped
:
CDI:javax.enterprise.context.SessionScoped
JSF:javax.faces.bean.SessionScoped
尝试以下操作(确保导入了正确的作用域类之后):
@Inject private BusinessController businessController;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.