资源注入问题JSF 2.2

时间:2014-11-01 09:42:20

标签: jsf jsf-2 jsf-2.2

我试图长时间实现resource injection但不能成功。

我使用JSF 2.2JDK 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。这里有什么问题? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我删除了ManagedBean的faces-config.xml中的ViewScopedsettingsBean个定义,并手动将它们添加到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;
        }
}