Java 如何刷新选项卡框项目单击上的数据?

Java 如何刷新选项卡框项目单击上的数据?,java,zk,Java,Zk,我有一个带几个项目的标签盒。我需要在用户单击选项卡时刷新数据。我有在容器中执行刷新的click命令,但我无法创建页面的刷新。这是.zul页面上的项目示例: <row valign="top"> <label value="Title with diacritics" zclass="field_label"/> <textbox value="@{main$composer.inventory.titleTranslitDcr, is-live=t

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

<row valign="top">
    <label value="Title with diacritics" zclass="field_label"/> 
    <textbox value="@{main$composer.inventory.titleTranslitDcr, is-live=true}"  hflex="1"/>
</row>
我确信在这段代码中我得到了字符串的有效值。但在使用F5完全重新加载之前,任何操作都不起作用

至于样本-我有大约50+个字段,我应该在5个字段中更新。我通过打开两个页面来测试这一点——在一个页面上,我将数据保存到db中,在另一个更改选项卡上,并查找更改,但什么也没有发生,即使我从db获得了正确的值(在另一个浏览器实例上更改了该值) 编辑11.04.2013:


找到了和这个很接近的东西。从教程中的onclick事件重新加载.zul页面,但我认为应该将其与@Command结合使用。有没有一种方法可以测试它是否工作?

您可以使用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>

您可以使用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>
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 () {

    }
}