JSF2-无法进行所需的输入+;清除(立即)按钮?
这个问题与这个问题类似,但这个解决方案在这里不起作用 以这个简单到最大的例子:JSF2-无法进行所需的输入+;清除(立即)按钮?,jsf,jsf-2,Jsf,Jsf 2,这个问题与这个问题类似,但这个解决方案在这里不起作用 以这个简单到最大的例子: <h:form> <h:inputText required="true" value="#{mrBean.someValue}" /> <h:inputText required="true" value="#{mrBean.someValue2}" /> <h:commandButton value="Submit"> <f:ajax e
<h:form>
<h:inputText required="true" value="#{mrBean.someValue}" />
<h:inputText required="true" value="#{mrBean.someValue2}" />
<h:commandButton value="Submit">
<f:ajax execute="@form" />
</h:commandButton>
<h:commandButton immediate="true" action="#{mrBean.clearAllValues}" value="Clear">
<f:ajax render="@form" />
</h:commandButton>
</h:form>
以这种情况为例:
- 在第一个输入中输入“X”值
- 使用“提交”按钮提交。(验证失败)
- 在同一输入中输入“Y”
- 单击“清除”按钮
- 结果:输入未清除,第一个输入的值返回“X”
mrBean.getSomeValue()
(这将返回null并清除输入字段)
这个问题与JSF不能很好地处理必填字段和即时消息有关。我想知道是否有人设法克服了这个问题
谢谢!
Ben.您确定执行了clearAllValues吗?日志或控制台中是否有错误? 尝试添加执行
<f:ajax render="@form" execute="@this">
您的代码示例过于简单。仅当您有多个所需输入时,才会出现所述问题症状。在示例中再添加一个必需的输入字段。只填写其中一个。空的将出现验证错误。然后在两者中输入其他内容,然后按clear。有效的输入确实会保留以前提交的值 和中详细描述了此问题。解决方案归结为收集所有待清除的输入组件并调用其中的每个组件。这可以通过一个
来完成,如博客文章所示
在您的特殊情况下,另一种方法是使用
,它基本上只是刷新页面,因为您只想清除整个表单。如果bean的作用域是请求或视图,那么它也将在所有属性都设置为默认值的情况下重新创建
<h:form>
<h:inputText required="true" value="#{mrBean.someValue}" />
<h:commandButton value="Submit">
<f:ajax execute="@form" />
</h:commandButton>
<h:button value="Clear" />
</h:form>
@MattHandy我正在使用MyFaces 2.0.11。您的someValue设置程序是在clearallvalues之前还是之后执行的?谢谢!!我修正了这个例子来表示这个问题。
<h:form>
<h:inputText required="true" value="#{mrBean.someValue}" />
<h:commandButton value="Submit">
<f:ajax execute="@form" />
</h:commandButton>
<h:button value="Clear" />
</h:form>