为什么我的表单在渲染后不重设样式?

时间:2019-08-29 19:45:22

标签: primefaces jsf-2

我有一个带有树形按钮的表单。其中一个是返回到上一页的“取消”按钮。

enter image description here

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

这是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的方法来设置表单,该方法将在render属性中评估他的呈现状态。

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

hideMainForm方法调用两次setRenderStatus方法,将主窗体的呈现状态设置为false,将添加乘客的呈现状态设置为true。

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

enter image description here

[编辑]

对不起,我忘了添加以下两种形式的渲染评估代码:

“ 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>

1 个答案:

答案 0 :(得分:0)

我使用了tds_values = ','.join([td.text.strip() for td in detail.select('td.value')]) ,而这个依我的需要工作。 我真的不知道为什么要使用ajax而不是resetInput。

<p:ajax resetValues="true">