来自父网页的XFages getComponent在iFrame中

时间:2015-07-31 10:25:34

标签: iframe xpages lotus-domino tabcontainer

我们已经构建了一个带有选项卡式容器的Xpage应用程序。 选项卡容器的第一页包含一个视图,当单击此视图内的文档时,带有相应文档的新选项卡将添加到tabcontainer。这个新的tabpage包含一个带有scr属性的面板,要显示的页面的url被赋予这个面板的src属性。结果是我们有一个带有iframe的标签页,iframe保存了我们的文档页面。

问题:

从这个iframe中我们需要从父网页获取一个组件(SSJS或Java)。 getComponent函数在这种情况下不起作用,因为它只搜索当前组件树(iFrame而不是父页面)。

我正在寻找从父页面获取组件的方法......

关于如何实现这一目标的任何想法?

谢谢: - )

2 个答案:

答案 0 :(得分:0)

1)创建托管bean

    package mypackage;

    import javax.faces.component.UIComponent;

    public class MyComponentBean {

        private  UIComponent component;

        public void setComponent(UIComponent component) {
            this.component = component;
        }

        public UIComponent getComponent() {
            return component;
        }

    }

2)将托管bean添加到faces-config.xml

中的sessionScope
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>

  <managed-bean>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-bean-name>componentBean</managed-bean-name>
    <managed-bean-class>mypackage.MyComponentBean</managed-bean-class>
  </managed-bean>

</faces-config>

3)将bean添加为第1页上的组件绑定

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:inputText
        id="inputText1"
        binding="#{componentBean.component}">
    </xp:inputText>

    <xp:br />

    <xp:button
        value="Label"
        id="button1">
        <xp:eventHandler
            event="onclick"
            submit="true"
            refreshMode="partial" refreshId="inputText1">
        </xp:eventHandler>
    </xp:button>

</xp:view>

4)访问第2页的组件(在本例中为组件的值)

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:label
        value="#{componentBean.component.value}"
        id="label1">
    </xp:label>

    <xp:br />

    <xp:button
        value="Label"
        id="button1">
        <xp:eventHandler
            event="onclick"
            submit="true"
            refreshMode="partial" refreshId="label1">
        </xp:eventHandler>
    </xp:button>
</xp:view>

答案 1 :(得分:0)

感谢您的建议! 我采用了以下方法,通过使用view.postScript命令,我能够在主页面上触发一个按钮,这个按钮会激活我的对话框:-)       

 view.postScript("parent.document.getElementById('view:_id1:_id2:btnDisplayDialog').click();");