为什么我的表单在渲染后没有重置他的样式?

Why does my form isn't reseting his styling after render?

我有一个带有树按钮的表单。其中之一是返回上一页的 "Cancel" 按钮。

问题是存在任何验证问题,例如未提交必填字段,当我返回表单时未重置该字段的样式。

这是xhtml的简化结构:

   <panel id="horizontal">
        <form id="filterVipLoungeForm">
        </form>
        <form id="frmAddPax">
            <form id="frmAccessType">
            </form>
        </form>
        <panelGrid>
            <commandButton value="agregar" />
            <commandButton value="limpiar" />
            <commandButton value="cancelar" />
        </panelGrid>
    </panel>

调用添加乘客表单的按钮代码:

<p:commandButton
    value="#{label['manageVipLoungeEntrance.button.addPassenger']}"
    action="#{manageVipLoungeEntranceExtMB.setRenderStatus(3, 1)}"
    actionListener="#{manageVipLoungeEntranceExtMB.hideMainForm}"
    update=":filterVipLoungeForm :horizontal">
</p:commandButton>

取消按钮代码:

<p:commandButton
    value="#{label['manageVipLoungeEntrance.button.cancel']}"
    onclick="showLocalDate()"
    action="#{manageVipLoungeEntranceExtMB.setRenderStatus(0, 1)}"
    actionListener="#{manageVipLoungeEntranceExtMB.setRenderStatus(3, 0)}"
    update=":filterVipLoungeForm :horizontal">
</p:commandButton>

这从支持 bean 调用 setRenderStatus 调用一个方法,设置表单和他的呈现状态以在呈现属性中评估。

在此过程中,取消按钮的表单呈现状态设置为 false,而前一个表单的呈现状态设置为 true。

hideMainForm方法调用了两次setRenderStatus方法,设置主窗体渲染状态为false,添加乘客渲染状态为true。

问题是任何验证错误,如果我返回上一页并返回表单,我仍然收到验证错误。

[编辑]

抱歉,我忘记添加了其中包含的两个表单的渲染评估代码:

表单的呈现状态验证 "frmAddPax"

<h:form id="frmAddPax" rendered="#{manageMB.renderStatus.isRenderFormAddPax()}">

表单的呈现状态验证 "filterVipLoungeForm"

<h:form id="filterVipLoungeForm" style="width:95% !important;"
rendered="#{manageMB.renderStatus.isRenderFormMain()}"
onkeypress="return event.keyCode != 13">

我已经尝试使用 <p:resetInput> 但它没有用,我期待 ID 为 frmAddPax 的表单重置他的状态但它没有用:

<p:commandButton
    value="#{label['manageVipLoungeEntrance.button.cancel']}"
    onclick="showLocalDate()"
    action="#{manageVipLoungeEntranceExtMB.setRenderStatus(0, 1)}"
    actionListener="#{manageVipLoungeEntranceExtMB.setRenderStatus(3, 0)}"
    update=":filterVipLoungeForm :horizontal">
    <p:resetInput target=":frmAddPax" />
</p:commandButton>

我使用了 <p:ajax resetValues="true">,这个可以满足我的需要。 我真的不知道为什么要使用 ajax 而不是 resetInput。

<p:commandButton
    value="#{label['manageVipLoungeEntrance.button.cancel']}"
    onclick="showLocalDate()"
    action="#{manageVipLoungeEntranceExtMB.setRenderStatus(0, 1)}"
    actionListener="#{manageVipLoungeEntranceExtMB.setRenderStatus(3, 0)}"
    update=":filterVipLoungeForm :horizontal">
    <p:ajax update=":frmAddPax" resetValues="true" />
</p:commandButton>