我试图长时间实现resource injection
但不能成功。
我使用JSF 2.2
,JDK 1.7.
我的ide是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。这里有什么问题? 谢谢你的帮助。
答案 0 :(得分:2)
我删除了ManagedBean
的faces-config.xml中的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;
}
}