【发布时间】:2012-03-07 23:27:18
【问题描述】:
我有以下问题。 (jboss 7.1 as、jsf 2 和 myFaces 扩展过滤器)
两个托管 bean。 (我已经清理了代码)。我想从 NextBean 中检索 LoginBean。问题是每次注入 bean 时,我都会得到一个 LoginBean 的新实例,而不是当前实例。我尝试过@Named("name") 之类的方法。从jsf页面调用bean本身(两者)并设置所有数据,但是每次都会注入一个新实例,我无法弄清楚我做错了什么!!!
@Named
@SessionScoped
public class LoginBean implements Serializable {
private static final long serialVersionUID = -8825740128333470396L;
@EJB private UserDetailDao userDetailDao;
private String description;
public String getDscription() { return description; }
public String submit() {
userDetailDao.doSomething("test");
description = "testing";
return "next.xhtml";
}
}
第二个豆子
@Named
@SessionScoped
public class NextBean extends SomeBean implements Serializable {
private static final long serialVersionUID = -4654827059950265300L;
@Inject private LoginBean loginBean;
public String submit() {
String description = loginBean.getDscription();
return "login.xhtml";
}
}
“描述”已设置,我可以在 jsf 页面中看到它,但我无法从 NextBean 访问它,因为它每次都会注入一个新实例!但是数据在会话中!
:/
有什么建议吗? 提前致谢!
【问题讨论】:
-
你确定是同一个会话吗?
-
没有创建一个新的。以上两个是创建的,如果我有一个@PostConstruct,那么它会被初始化一次,并且我在上面的 bean 中插入的值包含在各自的 jsf 视图中:/
-
您是否导入了正确的 (CDI) SessionScoped 类:
javax.enterprise.context.SessionScoped? -
@Matt:根据我已删除答案的评论,是的。
-
@BaluC 感谢您之前的回答!我 100% 确定我导入了正确的 CDI 类!但是我不确定其他豆子是否有正确的豆子!我会回家,如果是这样的话,如果它导致了这个问题!除此之外,我不知道:/过去两天我正在尝试修复它!