0

バッキング 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 コンポーネントを更新しません。

注:コンポーネントを更新しないと、ページを更新しない限り、デバッガーで同じメッセージが繰り返されます。

4

0 に答える 0