2015-01-21 59 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組成部分,而且具有自動更新=「真」等組成。

它不會禁用驗證。 (當然,除非你正在使用您的驗證調查,這我相信你是不是)