发生验证错误时,Ajax重置值

时间:2015-09-04 14:26:33

标签: jsf jsf-2 jsf-2.2

我有一个带有重置按钮的表单。此按钮的目的是重置表单的值。当没有验证错误时,这可以正常工作。

当出现验证错误时,它不起作用。

<h:form id="form">  
  <h:inputText id="v1" value="#{bean.value1}"/>
  <h:inputText id="v2" value="#{bean.value2}" required="true"/>
  <h:commandLink value="submit" action="#{bean.submit}">
    <f:ajax render="v1 v2"/>
  </h:commandLink> 
  <h:commandButton value="reset" action="#{bean.dummy}">
    <f:ajax render="@form" resetValues="true"/>
  </h:commandButton>
</h:form>

当我尝试在单击“提交”按钮之前重置值时,将重置所有值。

当我在字段 v1 输入一些值而字段 v2 中没有值时,按下保存时,我会按预期获得验证消息。

现在,我尝试通过单击重置按钮来重置值。它只会重置无效字段 v2 。有效字段 v1 未重置。

我错过了什么。

1 个答案:

答案 0 :(得分:3)

Utilities.Tuple有一个误导性的名字。它仅重置组件状态。它不会重置模型值。你自己仍然对此负责。

resetValues
<h:commandButton value="reset" action="#{bean.reset}">
    <f:ajax render="@form" resetValues="true"/>
</h:commandButton>

另一种方法是将public void reset() { value1 = null; value2 = null; } 放入按钮,这会将表单重置为初始状态,就像将页面呈现给最终用户时一样。

type="reset"

更好的是刷新页面。

<h:commandButton value="reset" type="reset" />

另见:

相关问题