0

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

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

<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 类具有usergetter 和 setter 以及其他一些方法的字段。这是一个具有 Session 范围的 Spring bean。

当我按下取消时,我看到 NPE,因为 jsf 尝试保存用户对象中输入的值,但用户对象为空。

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

4

1 回答 1

1

在您的取消按钮集上immediate="true" 这将跳过所有“不需要的”阶段。

但是,您的“创建”按钮也会出现同样的问题,您不应该immediate在那里使用。更好地初始化user属性 - 在构造函数中,或@PostConstruct在方法上使用注释,该方法执行初始化操作。

于 2009-12-17T15:22:16.677 回答