我的每个zk页面都有一个,并且在每个我创建一个列,在我的列中我需要添加一个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(){
}
}
由于
答案 0 :(得分:1)
如果您的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
标记。请查看how to pass values to included ZK pages上的文档。
修改强>
如果转到iframe
路线,您可以使用ZK的Execution
类从test.zul
访问网址参数值:
Execution execution = Executions.getCurrent();
execution.getParameter("myValue");