用zk在iframe中变量

时间:2013-10-10 03:56:53

标签: iframe data-binding zk zk-grid

我的每个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(){

  }

}

由于

1 个答案:

答案 0 :(得分:1)

如果您的eachString,当您将其设置为列标签时,请将其作为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");