比方说,我有一个zul页面(page1.zul),如下所示:
<zk>
<textbox id="textbox1" ></textbox>
<button label="Display" onClick="display()" ></button>
<include id="include1" ></include>
<zscript>
display() {
include1.setSrc("page2.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);
}
</zscript>
</zk>但是,我得到了一个错误-“尝试对空值调用方法getZScriptFunction”。因此,include1.getChildPage()返回一个空值,即我不能使用getChildPage()检索"page2“,并且我不确定如何处理它。
我的第二个页面如下所示:(page2.zul)
<zk>
<label id="label1" ></label>
<zscript>
doDisplay(String value) {
label1.setValue(value);
}
</zscript>
</zk>如果我在文本框中输入内容并单击"Display“按钮,我希望将不同页面(即page2)中的label的值设置为文本框中的值。其思想是将组件的值从一个页面传递到另一个包含的页面的zscript函数。
发布于 2012-01-25 20:44:32
您可以这样做,而不是传递值。
在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>发布于 2012-12-07 12:46:40
您可以按如下方式更改file1:
<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>发布于 2012-02-04 15:02:41
我的建议是使用EventQueue来防止两个zul文件的耦合。
更多细节,请参考示例代码。http://zkfiddle.org/sample/379s7ev/3-A-sample-for-using-Event-queue-to-talk-with-other-include
https://stackoverflow.com/questions/8975024
复制相似问题