我正在使用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生命周期,但我无法解决它 . 那么在从对话框中选择新实体时,如何在验证失败后更新表单?
提前致谢 .
2 回答
正是出于这个目的,引入了<p:resetInput> component(基于OmniFaces ResetInputAjaxActionListener) .
将其嵌入命令按钮,将_2595304设置为与命令按钮的
update
属性相同的客户端ID:另见:
How can I populate a text field using PrimeFaces AJAX after validation errors occur?
Reset input fields without executing validation
试试这种方式:
我认为重新呈现对话框层次结构存在一些问题,这种方式对话框不会更新 .
你应该使用
oncomplete="PF('costAuthDialog').hide()"
而不是onclick