Function ZK-调用包含子页面的ZScript函数
比如,我有一个zul页面(page1.zul),如下所示:Function ZK-调用包含子页面的ZScript函数,function,zk,Function,Zk,比如,我有一个zul页面(page1.zul),如下所示: 显示(){ 包括1.setSrc(“第2.zul页”); java.lang.Class[]argTypes=new java.lang.Class[]{String.Class}; org.zkoss.xel.Function fn=include1.getChildPage().getZScriptFunction(“doDisplay”,argTypes); fn.invoke(null,textbox1.value); }
显示(){
包括1.setSrc(“第2.zul页”);
java.lang.Class[]argTypes=new java.lang.Class[]{String.Class};
org.zkoss.xel.Function fn=include1.getChildPage().getZScriptFunction(“doDisplay”,argTypes);
fn.invoke(null,textbox1.value);
}
但是,我得到了一个错误——“尝试在null值上调用方法getZScriptFunction”。因此,include1.getChildPage()返回一个空值,即我无法使用getChildPage()检索“page2”,并且我不确定如何执行该操作
我的第二页如下所示:(page2.zul)
doDisplay(字符串值){
标签1.设定值(值);
}
如果我在文本框中输入内容并单击“显示”按钮,我想将不同页面(即第2页)中标签的值设置为文本框中的值。其思想是将组件的值从一个页面传递到另一个包含页面的zscript函数。您可以这样做,而不是传递值 在Page2.zul中
<zk>
<label id="label1" ></label>
<zscript>
doDisplay(String value) {
Textbox textbox=(Textbox)((Include)label1.getSpaceOwner()).getSpaceOwner().getFellowIfAny("textbox1");
label1.setValue(textbox.getValue());
}
</zscript>
</zk>
doDisplay(字符串值){
Textbox Textbox=(Textbox)((包括)label1.getSpaceOwner()).getSpaceOwner().getFellowIfAny(“textbox1”);
label1.setValue(textbox.getValue());
}
我的建议是改用EventQueue来防止两个zul文件的耦合
更多详细信息,请参考示例代码。
您可以按如下方式更改文件1:
<zk>
<textbox id="textbox1" ></textbox>
<button label="Display" onClick="display()" ></button>
<!-- <include id="include1" ></include> -->
<div id="include"></div>
<zscript>
display() {
include.appendChild(Executions.createComponents("page2.zul", include, null));
}
</zscript>
</zk>
显示(){
include.appendChild(Executions.createComponents(“page2.zul”,include,null));
}
<zk>
<label id="label1" ></label>
<zscript>
doDisplay(String value) {
Textbox textbox=(Textbox)((Include)label1.getSpaceOwner()).getSpaceOwner().getFellowIfAny("textbox1");
label1.setValue(textbox.getValue());
}
</zscript>
</zk>
<zk>
<textbox id="textbox1" ></textbox>
<button label="Display" onClick="display()" ></button>
<!-- <include id="include1" ></include> -->
<div id="include"></div>
<zscript>
display() {
include.appendChild(Executions.createComponents("page2.zul", include, null));
}
</zscript>
</zk>