0

我刚刚升级到 JSF 2.3 & Wildfly 14(从 2.0 和 13)和 primefaces 6.2.5。

当我使用命令按钮时,我注意到一个奇怪的行为。我有 2 个表单,当按下第一个表单的按钮时,会验证第二个表单的输入,并且错误(在这种情况下是必需的错误)显示在 ap:message 中:

<h:form id="form1" prependId="false">
    <p:commandButton id="save" value="Save" actionListener="#{myBean.save()}" update="@form">
        <f:actionListener binding="#{myBean.reloadResults()}" />
    </p:commandButton>
    <p:messages id="msgs" severity="error,warn" escape="false">
        <p:autoUpdate />
    </p:messages>
...     
</h:form>

<p:dialog >
    <h:form id="form2" >
        <p:messages severity="error,warn" escape="false">
            <p:autoUpdate />
        </p:messages>
        <div>
            <p:calendar id="myDate" value="#{myBean.myDate}" required="true" />
        </div>
        ...     
    </h:form>
</p:dialog>

我期望只处理和验证第一个表单的内容。Wildfly 13 和 jsf 2.0 就是这种情况。

任何想法?

4

2 回答 2

0

您尚未在命令按钮中指定属性进程。默认值为@all,它将验证所有表单。请使用 process="@form" 避免其他表单的验证和处理。

更新后的代码如下:

<p:commandButton id="save" value="Save" actionListener="#{myBean.save()}" update="@form" process="@form">
        <f:actionListener binding="#{myBean.reloadResults()}" />
    </p:commandButton>
于 2018-10-31T13:13:00.417 回答
0

我不得不为没有发布整个代码而道歉,但它会很大。我发现了问题所在。它与此错误有关:

https://github.com/primefaces/primefaces/issues/4122

我有一个 4 列的面板网格,但其中包含 10 个元素。

然后整个 ajax 通信被破坏了。修复即将在 PF 6.3 中发布

于 2018-10-31T13:38:11.803 回答