私はCDIを初めて使用し、これをJSF2アプリケーションに使用したいと考えています。クラスMyUser
は単純な@Entity
-Beanであり、オブジェクトは@PostConstruct
Beanのメソッドで作成されます。
@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で使用できるようにしたいのですが、これを行う方法がわかりません。単純@Inject
にそれを実行しても機能しませんでした(そして、これは単純なものに少しなります)。
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]
user
他のBeanからにアクセスするための最良のアプローチは何ですか?JSF1.2スタイルのコードはUserBean bean = (UserBean)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("UserBean");
昔ながらのようです!