2013-10-18 16 views
0
main.zul 

    [email protected]('Main')... 
     <zk> 
     ... 
      <include src="north.zul"/> 
      <include src="@bind(vm.pageSource)"/> 
     ... 
     <zk> 

north.zul 
    [email protected]('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 ?) 
} 


現在10請求來main.zul然後主要和北部的實例將被創建,無論如何,我可以訪問主要的對象?如果如何訪問會話作用域實例中ZKoss

有什麼東西像ZKcontext,我可以要求會話範圍實例嗎?

+0

我不明白你的問題。你說「一個_request_到main.zul將創建_session scope_ instances ..」。你指的是什麼樣的_request_?當你說_session scope_時,你的意思是你把這些Java對象放在['Session'](http://www.zkoss.org/javadoc/latest/zk/org/zkoss/zk/ui/Session.html) ?你顯示'north.zul'被引用的地方,但是'North.java'在哪裏起作用? –

+0

請求是一個http請求...不,我沒有把任何對象放在會話中...我認爲應該有一些會話保持這個對象... – Bhuvan

回答

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); 
} 
+0

Brawo !!!你做了我的一天....只是爲了確認沒有其他方式來溝通ViewModels的不同觀點吧?...... – Bhuvan

+0

不是我所知道的。這是去的方式^^ – bidifx

相關問題