我的 zk 页面中有一个 for 每个,在每个页面中我正在创建一个列,在我的列中我需要添加一个 iframe,并且我需要将列的标签作为变量传递给每一帧。
我有这样的东西:
<zk>
<window title="Dynamic Columns" border="normal" width="1824px" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('pkg$.DynamicColumnModel')">
<grid >
<columns>
<column forEach="${vm.columnList}" label="${each}">
<iframe
src="test.zul" />
</column>
</columns>
</grid>
</window>
</zk>
但是当我包含页面时我遇到了一个错误,我的第一个问题是我不知道如何将变量传递给每个 iframe。
我的java是这样的:
public class DynamicColumnModel {
private List<String> columnList = new ArrayList<String>();
private String texto="123";
@Init
public void init(){
columnList.add("Dynamic Col A");
columnList.add("Dynamic Col B");
columnList.add("Dynamic Col C");
columnList.add("Dynamic Col D");
}
public List<String> getColumnList() {
return columnList;
}
public void setColumnList(List<String> columnList) {
this.columnList = columnList;
}
public String getTexto() {
return texto;
}
public void setTexto(String texto) {
this.texto = texto;
}
@Command
public void mensaje(){
}
}
谢谢
如果您的each
是一个String
,它看起来像您将其设置为列标签,请继续将其作为URL参数传递给iframe
。
<window apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('pkg$.DynamicColumnModel')">
<grid >
<columns>
<column forEach="${vm.columnList}" label="${each}">
<iframe src="test.zul?myValue=${each}" />
</column>
</columns>
</grid>
</window>
请注意,当您使用 iframe
组件时,您将逐步走出 ZK。诚然,iframe
本身指向一个 ZK 页面,但它不在同一个 ZK 环境中。iframe
可以很容易地包含www.google.com
,因此没有特定的 ZK 支持将值传递到以这种方式包含的 ZK 页面。
如果您只包含 ZK 页面并希望更流畅地将信息传递给这些页面,则需要使用 ZK 的 include
标记。查看有关如何将值传递到包含的 ZK 页面的文档。
编辑
如果采用iframe
路线,则可以使用 ZK 的 Execution
类从test.zul
访问 URL 参数值:
Execution execution = Executions.getCurrent();
execution.getParameter("myValue");