1

iFrame を使用して、アプリケーションで生成されたレポートを GUI に表示しています。レポートは iframe 内の GUI に正しく表示されます。ただし、特定のボタンをクリックすると、iframe が消えます (render=false)。しかし、私の完全な不信に、これは起こっていません。

iframe がページにレンダリングされると、ページ全体を更新しない限り、 render=false になりません。

iframe は の中に配置され<rich:layoutPanel>ます。iframe を内部に保持しようと<h:panelGrid><h:panelGroup>ましたが、render プロパティを使用してレンダリングしましたが、iframe 自体は表示されませんでした。来たらrender属性<h:panelGrid>をfalseにしてもiframeがrender=falseになっていませんでした。

iframe はページ全体の既存の DOM に対して別の DOM を作成することを理解していますが、特定のボタンのクリックに基づいて iframe をレンダリングする方法が必要です。

iFrame のコード スニペット:

<h:panelGroup id="checkIFrame" rendered="#{Bean.renderPanelGroup}">
    <iframe frameborder="0" align="left"
        src="${pageContext['request'].contextPath}/moduleName/PageName.jsf"
        name="PdfPnl" id="PdfPnl" scrolling="auto" width="750"
        height="500" marginheight="5" marginwidth="10">
    </iframe>
</h:panelGroup>

iframe をレンダリングする必要があるクリック時のボタンのコード スニペット = false

<a4j:outputPanel id="outButton">
    <a4j:commandButton value="Send" immediate="true" status="Hello" 
        rendered="#{Bean.renderTrueFalse}" reRender="outButton,checkIFrame"
        id="Again" process="FormName" actionListener="#{bean.affirmative}"
    />
</a4j:outputPanel>

ボタンのクリックに基づいて iframe=false/true をレンダリングするにはどうすればよいですか?

4

1 に答える 1

5

レンダリングされた属性が定義されているコンポーネントを再レンダリングすることはできません。render 属性が定義されていない checkIFrame の親コンポーネントを reRender する必要があります。

アップデート:

<h:panelGroup id="aParentPanel">
     <h:panelGroup id="checkIFrame" rendered="#{Bean.renderPanelGroup}">
         <iframe frameborder="0" align="left"
             src="${pageContext['request'].contextPath}/moduleName/PageName.jsf"
             name="PdfPnl" id="PdfPnl" scrolling="auto" width="750"
             height="500" marginheight="5" marginwidth="10">
         </iframe>
     </h:panelGroup>
</h:panelGroup>

...
<a4j:commandButton reRender="aParentPanel".../>

...

于 2012-08-17T09:49:22.647 に答える