Function ZK-调用包含子页面的ZScript函数

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); }

比如,我有一个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);
}
但是,我得到了一个错误——“尝试在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>