如何在ZKoss中访问会话范围实例

时间:2013-10-18 05:35:50

标签: java session mvvm scope zk

main.zul

    ...@init('Main')...
        <zk>
        ...
           <include src="north.zul"/>
           <include src="@bind(vm.pageSource)"/>
        ...
        <zk>

north.zul
    ...@init('North')...
        <zk>
        ...
           <a onClick="@command('linkClicked')">link</a>
        ...
        <zk>

Main.java
...
private String pageSource = "content1.zul"
//getter setter of PageSource

North.java
...
@command
public void linkClicked(){
   // access main object and call main.setPageSource("content2.zul") (how to do this ?)
}


现在,如果为main.zul发出http请求,那么将创建Main和North的实例,无论如何我可以访问Main对象吗?

是否有像ZKcontext这样的东西,我可以要求会话范围实例?

1 个答案:

答案 0 :(得分:1)

您应该在onClick中的north.zul事件中发布全局命令:

onClick="@global-command('switchContent', file='content2.zul')"

在你的Main.java中,你在听这个全局命令:

@GlobalCommand
@NotifyChange("pageSource")
public void switchContent(@BindingParam("file") String file) {
  setPageSource(file);
}