首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制jsf创建新的bean实例而不是抛出NullPointerException?

如何强制jsf创建新的bean实例而不是抛出NullPointerException?
EN

Stack Overflow用户
提问于 2009-12-17 23:18:32
回答 1查看 730关注 0票数 0

我几乎可以肯定我做错了什么,因此问题的标题有点不正确。

我有一个表单,其中有几个用于创建新用户的字段-对象(登录、密码、生日等字段)。我有两个按钮--取消和创建。我还没有完成创建:),但是当我按下Cancel时,我看到了NullPointerException。以下是简化的代码:

代码语言:javascript
复制
<f:view>
    <h:form>
        <h:panelGroup layout="block">       
            <h:inputText id="add_login" value="#{userSupport.user.login}"/>
            <h:inputSecret id="add_password" value="#{userSupport.user.password}"/>
            <h:inputText id="add_name" value="#{userSupport.user.name}"/>
            <h:inputText id="add_surname" value="#{userSupport.user.surname}"/>

            <h:commandButton value="Cancel" action="cancel"/>
        </h:panelGroup>
    </h:form>
</f:view>

UserSupport类有字段user,带有getter和setter以及其他一些方法。它是一个具有会话作用域的Spring bean。

当我按下cancel时,我看到NPE,因为jsf试图保存user-object中输入的值,但user-object为null。

这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-17 23:22:17

在你的cancel按钮set immediate="true"上,这将跳过所有“不需要的”阶段。

然而,同样的问题也会出现在你的"create“按钮上,你不应该在那里使用immediate。最好初始化user属性-要么在构造函数中初始化,要么在方法上使用@PostConstruct注释,后者执行初始化操作。

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

https://stackoverflow.com/questions/1922434

复制
相关文章

相似问题

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