@GlobalCommand
@Command
@NotifyChange("*")
public void makeProgress(){
int progress = getProgress();
if(progress == 100){
return;
}
progress++;
Thread.sleep(100); // do some part of time consuming work
setProgress(progress);
BindUtils.postGlobalCommand(null, null, "makeProgress", null);
}
Zul
<window apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.javaBean')">
<progressmeter value="@bind(vm.progress)" width="300px" />
<button onClick="@command('makeProgress')"></button>
</window>
我想让用户了解完成的工作百分比。 (我正在使用mvvm
模型)因此,我创建了一个progressmeter
,其值是bind。单击button
并单击以启动过程。在makeProgress()
中,我做部分工作并发布命令。
我希望它显示进度条每100毫秒增加一。但是,当我尝试使用它时,进度条会在10秒(100毫秒等待* 100)后直接显示100%。
我想念什么?
或者有更好的方法可以做到这一点?
[不确定是否可行。如果您需要进度条来自动更新,则可能必须使用SelectorComposer而不是BindComposer。 SelectComposer可以将数据推送到客户端。您可以让计时器运行@interval并继续更新数据。