首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么NPE在这个豆子里?

为什么NPE在这个豆子里?
EN

Stack Overflow用户
提问于 2011-05-26 12:32:14
回答 1查看 104关注 0票数 0

我有一个会话bean:

代码语言:javascript
复制
<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中:

代码语言:javascript
复制
<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在这里是空.我希望它在访问createAccountBean时自动创建(如果为null )

代码语言:javascript
复制
    @PostConstruct
    public void init() {
        userLoginVo = new UserLoginVo();
        //NPE here
        mainMenuNavigationBean.setExternalPage(true);
    }

能给我个提示吗?我不明白我做错了什么..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-26 12:49:30

为了使<managed-property>正常工作,需要确保要注入的bean是一个具有(隐式) public默认构造函数的public类,该构造函数不会在构造时抛出任何异常。

代码语言:javascript
复制
public class MainMenuNavigationBean {

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

    // ...
}

你需要确保承兑人有一个有效的属性和一个有效的设置者。

代码语言:javascript
复制
public class CreateAccountBean {

    private MainMenuNavigationBean mainMenuNavigationBean;

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

    // ...
}

请注意设置器中的this,如果您忽略了这一点,则设置器没有任何效果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6138510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档