2

ページに次のようなiFrameがあります。

<h:panelGroup id="gameDiv">
    <f:verbatim>
        <iframe src="/levelup/resources/#{cc.attrs.src_dir}/#{cc.attrs.src_html}"     width="700px" height="800px" frameborder="0" id="gameFrame">
         </iframe>
    </f:verbatim>
</h:panelGroup>

基本的に、「src」変数はJSF 2.0 ELを使用してバインドされ、バッキングBeanからその値を取得します。

次に、フォームを使用してこの値を更新し、ページ全体を更新します。レンダリングされたHTMLで、divの「src」が更新されていることがわかります。ただし、HTMLページには古いページが引き続き表示されます。

問題は、srcが異なっていても同じ表示の2つのiframeに似ていると思い、前述の解決策を試しました(タイムスタンプを使用してsrcを一意にするか、それぞれで「about:blank」にリセットします)ページの読み込み)。しかし、それらのどれも機能しませんでした。

詳細については、バッキングBeanを更新するフォームは次のとおりです。

<h:form id="gameSelectionForm">
    <h:selectOneMenu id="gameSelection">
        <f:selectItems value="#{gameBean.gameIds}" />
    </h:selectOneMenu>
    <p:commandButton id="gameSelector" action="#{gameBean.changeGame}" update="gameScoreFieldset, gameDiv" />
</h:form>

どんなヒントでも大いに役立ちます。

よろしくお願いします、
Sébastien

4

1 に答える 1

3

使用しているJS/Ajaxを変更していますがsrc、そのコンテンツをリロードしていません。iframe

これを修正するには2つの方法があります。

  • JS/ajaxは使用しないでください。同期HTTPリクエストはドキュメント全体をリロードするため、自動的に。をリロードしiframeます。

    <p:commandButton ajax="false" />
    
  • JSを使用して強制的にリロードします。の後に以下を追加します<iframe>

    <script>document.getElementById('gameFrame').location.reload()</script>
    

ああ、あなたは間違いなくを削除する必要があります<f:verbatim>。JSF 1.2以降、そのタグはまったく役に立たない

于 2010-12-24T15:54:37.667 に答える