我们已经构建了一个带有选项卡式容器的Xpage应用程序。 选项卡容器的第一页包含一个视图,当单击此视图内的文档时,带有相应文档的新选项卡将添加到tabcontainer。这个新的tabpage包含一个带有scr属性的面板,要显示的页面的url被赋予这个面板的src属性。结果是我们有一个带有iframe的标签页,iframe保存了我们的文档页面。
问题:
从这个iframe中我们需要从父网页获取一个组件(SSJS或Java)。 getComponent函数在这种情况下不起作用,因为它只搜索当前组件树(iFrame而不是父页面)。
我正在寻找从父页面获取组件的方法......
关于如何实现这一目标的任何想法?
谢谢: - )
答案 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();");