2013-04-10 30 views
1

我有幾個項目的tabbox。當用戶點擊標籤時,我需要刷新數據。我有點擊命令,在容器中執行刷新,但我無法創建刷新頁面。這是例如.zul頁面上項目:如何刷新tabbox項目點擊數據?

<row valign="top"> 
    <label value="Title with diacritics" zclass="field_label"/> 
    <textbox value="@{main$composer.inventory.titleTranslitDcr, is-live=true}" hflex="1"/> 
</row> 

這是怎麼這個數據,我試圖在bean設置:

public void populateTitleStatementFields() 
{ 
    this.titleTranslitDcr = Commons.getString(context, "/xml/TitleTranslitDCR", EMPTY); 
} 

我敢肯定,在該代碼我有字符串的有效值。但是在使用F5完全重新加載之前沒有任何工作。

至於樣本 - 我有大約50+字段,我應該更新在5包括。我通過打開兩頁來測試這一點 - 我將一個數據保存到數據庫,在其他更改選項卡上並查找更改,但沒有發生任何事情,即使我從db獲得了正確的值(在另一個瀏覽器實例中已更改) EDIT 11.04 .2013:

發現了一些與此相近的東西。從教程中的onclick事件重新加載.zul頁面,但我認爲我應該將它與@Command結合使用。有沒有辦法做到這一點,只是爲了測試它會起作用嗎?

回答

1

您可以按照下面ZK MVVM做到這一點:

test.zul

<zk> 
    <div apply="org.zkoss.bind.BindComposer" 
     viewModel="@id('vm') @init('test.TestVM')"> 
     <tabbox onSelect="@command('updateData')"> 
      <tabs> 
       <tab label="tab 1" /> 
       <tab label="tab 2" /> 
      </tabs> 
      <tabpanels> 
       <tabpanel> 
        <label value="@load(vm.dataOne)" /> 
       </tabpanel> 
       <tabpanel> 
        <label value="@load(vm.dataTwo)" /> 
       </tabpanel> 
      </tabpanels> 
     </tabbox> 
    </div> 
</zk> 

TestVM.java

package test; 

import org.zkoss.bind.annotation.Command; 
import org.zkoss.bind.annotation.NotifyChange; 


public class TestVM { 
    public String getDataOne() { 
     return System.currentTimeMillis() % 19 + ""; 
    } 
    public String getDataTwo() { 
     return System.currentTimeMillis() % 91 + ""; 
    } 
    @Command 
    @NotifyChange({"dataOne", "dataTwo"}) 
    public void updateData() { 

    } 
} 
相關問題