如何刷新tabbox项目上的数据?

时间:2013-04-10 15:33:56

标签: java zk

我有几个项目的tabbox。我需要在用户单击选项卡时刷新数据。我有点击命令在容器中执行刷新,但我无法创建页面刷新。这是.zul页面上的项目示例:

<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获得了正确的值(在另一个浏览器实例上已更改) 编辑11.04.2013:

找到了接近这个的东西。从教程中的onclick事件重新加载.zul页面,但我想我应该将它与@Command结合起来。有没有办法做它只是为了测试它会起作用吗?

1 个答案:

答案 0 :(得分: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 () {

    }
}