AdSense

網頁

2018/6/12

ZK 傳遞參數至include的zul頁面及ViewModel

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;
    }

}

今天網路上查了超久才搞定...,但這其實是我真正問題的一小部分。

沒有留言:

AdSense