ZK從外部zul(outer zul)傳送參數給incude的zul(inner zul)及其ViewModel的方法如下。
例如在外部的zul中有include的zul如下
outer.zul
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
<window>
<include src="/inner.zul" username="matt"/>
</window>
</zk>
則在被include的zul中可透過EL語法搭配隱含物件requestScope
取得。
inner.zul
<zk>
<div apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('idv.matt.vm.InnerVM')">
<label value="${requestScope.username}"/>
<textbox value="@load(vm.username)"/>
</div>
</zk>
而在inner.zul
綁定的ViewModel可以透過@ExecutionArgParam
(或@ExecutionArgParam
)傳入@Init
或@Command
方法。
InnerVM.java
package idv.matt.vm;
import org.zkoss.bind.annotation.ExecutionArgParam;
import org.zkoss.bind.annotation.Init;
public class InnerVM {
private String username;
@Init
public void init(@ExecutionArgParam("username") String username) {
System.out.println(username);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
今天網路上查了超久才搞定...,但這其實是我真正問題的一小部分。
沒有留言:
張貼留言