我正在使用PrimeFaces 4.0的JSF 2.
我有一个带有一些输入和验证的表单.从对话框中选择实体时,某些字段可能会自动填充.在我提交整个表单(并验证)之前选择实体时,这很好用.但是当我在验证后选择实体时,组件的更新不起作用.
JSF页面:
<h:form id="form"> <p:inputText id="id" value="#{bean.user.id}" required="true" onclick="PF('usersDialog').show()" /> <p:inputText id="name" value="#{bean.user.name}" required="true" onclick="PF('usersDialog').show()" /> <p:commandButton value="submit" action="#{bean.submit}" update=":form" /> </h:form> <p:dialog widgetVar="usersDialog"> <h:form> <p:dataTable value="#{bean.users}" var="user"> <p:column> <p:commandButton value="choose" onclick="PF('usersDialog').hide()" process="@this" action="#{bean.select(user)}" update=":form" /> </p:column> <p:column> <h:outputText value="#{user.name}" /> </p:column> </p:dataTable> </h:form> </p:dialog>
我知道它的JSF生命周期,但我无法解决它.
那么在从对话框中选择新实体时,如何在验证失败后更新表单?
提前致谢.
解决方法
正是出于此目的,引入了
<p:resetInput>
component(基于
OmniFaces ResetInputAjaxActionListener
).
将其嵌入命令按钮,目标设置为与命令按钮的更新属性相同的客户端ID:
<p:commandButton ... update=":form"> <p:resetInput target=":form" /> </p:commandButton>
也可以看看:
> How can I populate a text field using PrimeFaces AJAX after validation errors occur?
> Reset input fields without executing validation