【发布时间】:2011-06-14 12:24:58
【问题描述】:
我是 CDI 的新手,想将它用于 JSF2 应用程序。 MyUser 类是一个简单的@Entity-Bean,并且在 bean 中的 @PostConstruct 方法中创建了一个对象:
@Stateful
@Named @javax.faces.bean.SessionScoped
public class UserBean implements Serializable
{
@Named
private MyUser user;
//setter and getter
//@PostConstruct
}
在 JSF 页面中访问用户就像一个魅力:#{user.lastName}。但现在我想从其他 bean 访问这个对象,例如在这个@ViewScopedBean:
@Named @javax.faces.bean.ViewScoped
public class TestBean implements Serializable
{
@Inject private MyUser user;
}
我希望当前(登录)MyUser user 可以在其他几个 bean 中使用,但我不确定如何执行此操作。简单地@Injecting 它不起作用(我很确定这对于 simple 来说有点小意思)。
13:56:22,371 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController]
Error installing to Start: name=vfs:///Applications/Development/
jboss-6.0.0.Final/server/default/deploy/test.ear_WeldBootstrapBean state=Create:
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied
dependencies for type [MyUser] with qualifiers [@Default] at injection
point [[field] @Inject private test.controller.mbean.TestBean.user]
从其他 bean 访问 user 的最佳方法是什么?像 UserBean bean = (UserBean)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("UserBean"); 这样的 JSF1.2 样式代码似乎已经过时了!
【问题讨论】:
标签: java cdi jboss-weld