Я новичок в 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 работает так:*.Но теперь я хочу получить доступ к этому объекту из других бинов, например, в этом @ViewScopedBean
:
@Named @javax.faces.bean.ViewScoped
public class TestBean implements Serializable
{
@Inject private MyUser user;
}
Я хочу, чтобы текущий (вошедший в систему) MyUser user
был доступен в нескольких других бинах, ноЯ не уверен, как это сделать.Просто @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
из других бинов?Код стиля JSF1.2, например UserBean bean = (UserBean)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("UserBean");
, кажется старомодным!