我尝试了很长时间才能达到resource injection
,但未能成功。
我使用JSF 2.2
,JDK 1.7.
,我的想法是eclipse luna
。
我有一个称为UserBean
的会话范围的bean和一个称为SettingsBean
的视图范围的bean。
我在faces-config.xml
UserBean中将它们设置为session scoped
,在SettingsBean中将其设置为view scoped
,其bean名称分别为“ settingsBean
”和“ userBean
”
public class SettingsBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject // I also tried @ManagedProperty but didn't work
private UserBean userBean;
@PostConstruct
public void init(){
System.out.println(userBean.getUser().getFullName());
}
public UserBean getUserBean() {
return userBean;
}
public void setUserBean(UserBean userBean) {
this.userBean = userBean;
}
}
问题是我将userBean设置为null。这里有什么问题?
感谢帮助。
最佳答案
我在faces-config.xml中删除了ManagedBean
的ViewScoped
和settingsBean
定义,并将它们手动添加到SettingsBean.java
文件中。
并添加以下内容:
@ManagedProperty(value="#{userBean}")
private UserBean userBean;
所以最后,它起作用了:
@ManagedBean
@ViewScoped
public class SettingsBean implements Serializable{
private static final long serialVersionUID = 1L;
@ManagedProperty(value="#{userBean}")
private UserBean userBean;
//...
@PostConstruct
public void init(){
System.out.println(userBean.getUser().getFullName());
}
public UserBean getUserBean() {
return userBean;
}
public void setUserBean(UserBean userBean) {
this.userBean = userBean;
}
}