ここでの最初の投稿なので、私と一緒に少し裸にしてください。たくさん検索しましたが、盲目的だったか、正しい検索文字列を使用しなかったため、問題に関連する答えが見つかりませんでした。
基本的に、Java で記述され、Primefaces を使用する Web アプリケーションがあります。私は ap:layout を使用しており、レイアウトの中央ユニットにメイン コンテンツ、北にヘッダー、南ユニットにフッターを配置しています。west レイアウト ユニットは、2 秒ごとに実行される ap:poll を保持し、oncomplete イベントがトリガーされたときに js 関数を呼び出します。
ここまでは順調ですね。問題は、特定のページの中央のレイアウト ユニットに、long のみを受け入れる af:viewParam があり、値が有効であっても、上記のポーリングが実行されると、f:viewParam からの requiredMessage が表示されることです。
集中的な検索を行った後、ignoreAutoUpdate="true" を p:poll に追加すると、f:viewParam からのメッセージがトリガーされず、有効な ID を提供する必要があるという警告が表示されないことがわかりました。示されています。
だから、私の質問は次のとおりです。それとも放置しても大丈夫ですか?
これが私のレイアウトの関連部分です:
ウェスト レイアウト ユニットからの投票:
<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>
ありがとうございました!