为什么在这种豆中使用NPE?

| 我有一个会话bean:
<managed-bean>
    <managed-bean-name>mainMenuNavigationBean</managed-bean-name>
    <managed-bean-class>com.cloud.common.jsf.core.beans.MainMenuNavigationBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>
我将其注入到请求bean中:
<managed-bean>
    <managed-bean-name>createAccountBean</managed-bean-name>
    <managed-bean-class>com.cloud.common.jsf.account.CreateAccountBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>mainMenuNavigationBean</property-name>
        <property-class>com.cloud.common.jsf.core.beans.MainMenuNavigationBean</property-class>
        <value>#{mainMenuNavigationBean}</value>
    </managed-property>
</managed-bean>
现在,我正在尝试在我的createAccountBean的@PostConstruct中使用一个setter,但我不明白为什么mainMenuNavigationBean在此处为null ...我希望在访问createAccountBean时如果它为null,则会自动创建它
    @PostConstruct
    public void init() {
        userLoginVo = new UserLoginVo();
        //NPE here
        mainMenuNavigationBean.setExternalPage(true);
    }
你能给我一个提示吗?我不明白自己在做什么错...     
已邀请:
为了使ѭ3正常工作,您需要确保要注入的bean是带有ѭ4)默认构造函数的ѭ4which类,该构造函数在构造时不会引发任何异常。
public class MainMenuNavigationBean {

    public MainMenuNavigationBean() {
        // Can even be omitted altogether if you don\'t have other constructors.
    }

    // ...
}
并且,您需要确保接受者具有有效的属性和有效的设置方法。
public class CreateAccountBean {

    private MainMenuNavigationBean mainMenuNavigationBean;

    public void setMainMenuNavigationBean(MainMenuNavigationBean mainMenuNavigationBean) {
        this.mainMenuNavigationBean = mainMenuNavigationBean;
    }

    // ...
}
注意设置器中的
this
,如果忽略该设置,则设置器无效。     

要回复问题请先登录注册