0

第一次在这里发帖,所以对我来说有点裸露。搜索了很多,但无论是因为我是盲人还是因为我没有使用正确的搜索字符串,我都没有找到任何与我的问题相关的答案。

基本上,我有一个用 Java 编写并使用 Primefaces 的 Web 应用程序。我正在使用 ap:layout,主要内容在中心单元,页眉在北部,页脚在布局的南部单元。west 布局单元持有 ap:poll ,它每两秒运行一次,并且在触发 oncomplete 事件时调用一个 js 函数。

到目前为止,一切都很好。问题是,在某个页面上,在中心布局单元中,我有 af:viewParam,它只接受 long,即使该值是有效的,当执行上述轮询时,f:viewParam 中的 requiredMessage 也会出现。

在进行了一些深入的搜索后,我发现通过向 p:poll 添加 ignoreAutoUpdate="true" ,来自 f:viewParam 的消息不会被触发,并且告诉我必须提供有效 id 的警告不是' t 所示。

所以,我的问题是:通过在我的 p:poll 中使用 ignoreAutoUpdate="true" 是否会危及 f:viewParam 验证?或者把它放在那里安全吗?

这是我的布局中的相关部分:

民意调查形成西部布局单元:

<h:form id="liveQueueForm">
    <p:remoteCommand name="rcStart" action="#{liveQueueMB.startPoll()}"/>
    <p:remoteCommand name="rcStop" action="#{liveQueueMB.stopPoll()}"/>
    <p:poll id="liveQueueUpdater" delay="10" widgetVar="livePoll" interval="2" listener="#{liveQueueMB.init}" oncomplete="updateLiveQueue(xhr, status, args);" autoStart="true" partialSubmit="true" ignoreAutoUpdate="true" immediate="true" />

    <div id="live-queue">
        <div id="queue-holder"></div>
    </div>
</h:form>  

包含我的 f:viewParam 的 f:metadata 块:

<f:metadata>
        <f:viewParam name="callId" value="#{viewInboundCallDetailsMB.callId}" required="true" requiredMessage="Please provide a valid call ID" converter="javax.faces.Long" converterMessage="The call ID is not numeric" />
        <f:viewAction action="#{viewInboundCallDetailsMB.init}"/>
</f:metadata>

谢谢!

4

1 回答 1

0

来自 Primefaces 关于 ignoreAutoUpdate 的手册:“如果为 true,则不会为此请求更新 autoUpdate="true" 的组件。如果未指定,或者值为 false,则不会做出此类指示。”

这意味着它不会更新您的 viewParam 组件以及其他具有 autoUpdate="true" 的组件。

它不会禁用对它的验证。(当然,除非您使用民意调查进行验证,我认为您不是)

于 2015-01-22T10:25:15.890 回答