【问题标题】:Render IFrame in JSF page based on condition根据条件在 JSF 页面中渲染 IFrame
【发布时间】:2012-08-13 16:56:30
【问题描述】:

我们使用 iFrame 在 GUI 上显示应用程序中生成的报告。 报告在 iframe 内的 GUI 上正确显示。 但是,在某些按钮上单击我希望 iframe 消失(render=false)。但令我难以置信的是,这并没有发生。

一旦 iframe 在页面上呈现,除非我刷新整个页面,否则它不会呈现为 =false。

iframe 被放置在<rich:layoutPanel> 中。 我尝试将 iframe 保留在 <h:panelGrid><h:panelGroup> 中,并使用那里的渲染属性对其进行渲染,但是 iframe 本身并没有出现。 当它出现时,即使 <h:panelGrid> 的渲染属性设置为 false,iframe 也不会被渲染=false。

我知道 iframe 会针对整个页面的现有 DOM 创建一个单独的 DOM,但应该有一些方法可以根据某些按钮单击来呈现 iframe。

iFrame 的代码 sn-p:

<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>

点击哪个按钮的代码 sn-p,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?

【问题讨论】:

    标签: jsf iframe jsf-2 richfaces rendering


    【解决方案1】:

    您不能重新渲染定义了已渲染属性的组件。您需要重新渲染未定义渲染属性的 checkIFrame 的父组件。

    更新:

    <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".../>
    

    ...

    【讨论】:

    • 如果我重新渲染没有附加渲染属性的 checkIFrame 的父组件,那么如何在按钮(a4j)上隐藏 checkIFrame 点击...我唯一的目的是在按钮上隐藏 iframe(a4j ) 点击..
    • 您可以在 checkIFrame 面板上保留渲染属性。它将按预期工作。只需重新渲染另一个没有渲染属性的父组件。
    • 对不起,回答迟了..但是提供的解决方案不起作用.. iframe 本身没有显示..事实上 pdf 在新页面上打开...
    • 这是另一个不同的问题。你在什么浏览器上测试?尝试使用 而不是 iframe
    • 我正在使用 Mozilla firefox 14.0...我现在将尝试使用 标签,看看它是否正常工作..
    猜你喜欢
    • 2014-02-13
    • 2012-08-31
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多