2015-01-21 140 views
0

第一篇文章在这里,对我来说很简单。搜索了很多,但无论是因为我是失明还是因为我没有使用正确的搜索字符串,我还没有找到任何与我的问题有关的答案。Primefaces从f触发消息触发器:viewParam

基本上,我有一个用Java编写并使用Primefaces的Web应用程序。我使用的是p:布局,主要内容位于中心单元,北部的页眉和南部单元的页脚。 West布局单元持有一个每两秒运行一次的p:轮询,当oncomplete事件被触发时,cand调用js函数。

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

经过一番深入的搜索之后,我发现通过在p:poll中添加一个ignoreAutoUpdate =“true”,来自f:viewParam的消息不会被触发,并且告诉我必须提供一个不显示有效的ID。

所以,我的问题是:通过在我的P中的ignoreAutoUpdate =“真”:民意测验会妥协,以任何机会,在F:viewParam验证?还是安全地离开它?

这里是从我的布局relevan部分:

民意测验形成西布局单元:

<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:元数据块,其保持我的F:viewParam:

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

谢谢!

+0

你在哪里放置''标签? “”的进程属性默认设置为“@ form”(并且“@ p:remoteCommand>”设置为“@ all”)。因此,它处理整个形式。您可能需要将“”的流程属性设置为“@ this'(除了')之外。 – Tiny 2015-01-21 11:01:26

+0

使用''''标记是基于存储在具有会话范围的ManagedBean中的布尔值。我已经考虑过这种可能性,并在提出ignoreAutoUpdate =“true”解决方案之前尝试了它。 – 2015-01-21 11:15:01

回答

0

大约从ignoreAutoUpdate Primefaces手册: “如果为真,其中组分AUTOUPDATE =”真“将不被更新 为此请求如果没有指定,或值是 假,没有这样的指示而成。”。

这意味着它不会做更新viewParam组成部分,而且具有自动更新=“真”等组成。

它不会禁用验证。 (当然,除非你正在使用您的验证调查,这我相信你是不是)