我几乎可以肯定我做错了什么,因此问题的标题有点不正确。
我有一个表单,其中有几个用于创建新用户的字段-对象(登录、密码、生日等字段)。我有两个按钮--取消和创建。我还没有完成创建:),但是当我按下Cancel时,我看到了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类有字段user,带有getter和setter以及其他一些方法。它是一个具有会话作用域的Spring bean。
当我按下cancel时,我看到NPE,因为jsf试图保存user-object中输入的值,但user-object为null。
这样做的正确方法是什么?
发布于 2009-12-17 23:22:17
在你的cancel按钮set immediate="true"上,这将跳过所有“不需要的”阶段。
然而,同样的问题也会出现在你的"create“按钮上,你不应该在那里使用immediate。最好初始化user属性-要么在构造函数中初始化,要么在方法上使用@PostConstruct注释,后者执行初始化操作。
https://stackoverflow.com/questions/1922434
复制相似问题