我有几个项目的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结合起来。有没有办法做它只是为了测试它会起作用吗?
答案 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 () {
}
}