バッキング Bean メソッドを呼び出してすべてのオンライン ユーザーを表示するRemoteCommand (showOnlineUsers) があります。ただし、 (時々 )コンポーネント(OnlineUsersFormId:onlineUserId) を更新しません。
<p:remoteCommand name="showOnlineUsers"
action="#{bean.showOnlineUsers()}"
update="OnlineUsersFormId:onlineUserId" />
このリモート コマンドは、次の h:panelGroup を更新することになっています
<h:form id="OnlineUsersFormId">
<h:panelGroup id="onlineUserId">
<ui:repeat var="user" value="#{bean.usersList}">
#{user.getUserName()}
</ui:repeat>
</h:panelGroup>
</h:form>
このコードは正常に動作しますが、しばらくすると異常な動作をし、Chrome-Network-Debugger で不完全な部分応答メッセージを生成します。
生成されたメッセージの修正:
<partial-response id="j_id1">
<changes>
<update id="OnlineUsersFormId:onlineUserId">
<span id="OnlineUsersFormId:onlineUserId"></span>
</update>
<update id="j_id1:javax.faces.ViewState:0">-938130356222711200:-4155932992558832648
</update>
</changes>
</partial-response>
誤って生成されたメッセージ:
<partial-response id="j_id1">
<changes>
<update id="j_id1:javax.faces.ViewState:0">-938130356222711200:-4155932992558832648
</update>
</changes>
</partial-response>
Google Chrome のネットワーク デバッガーで正しく生成されていないパーシャル レスポンスからOnlineUsersFormId:onlineUserIdが欠落していることは明らかです。そのため (私は推測します)、ページ上の panelGroup コンポーネントを更新しません。
注:コンポーネントを更新しないと、ページを更新しない限り、デバッガーで同じメッセージが繰り返されます。