使用Zk 6.5.11CE。
在模式窗口中,我有一个按钮,单击发送电子邮件。这是一个很长的操作,在等待时间中,我想使用Clients.showBusy阻止用户单击/修改我的模式窗口。
这是祖尔
<window apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('viewmodel.EventView')">
...fill the form...
<button label="SEND" onClick="@command('send')" autodisable="self" />
</window>
这是Java EventView.java
@Command
@NotifyChange("*")
public void send() {
Clients.showBusy(winFather.getModalWin(), "Please wait...");
// ... do something ...
sendMail(); // it takes 2/3 seconds
Clients.clearBusy(winFather.getWinEvent());
}
其中winFather是称为模态窗口的win(我的主页),而getModalWin()获得模态窗口,其中出现了showBusy问题。希望很清楚:)
但是,我正在网上搜索,发现了一些有趣的here和here。所以我必须使用Echo Events。
对于那些没有点击链接的人:
<window id="w" width="200px" title="Test echoEvent" border="normal">
<attribute name="onLater">
doLongOperation(); //take long to execute
Clients.clearBusy(); //remove the busy message
</attribute>
<button label="Echo Event">
<attribute name="onClick">
Clients.showBusy("Execute..."); //show a busy message to user
Events.echoEvent("onLater", w, null); //echo an event back
</attribute>
</button>
</window>
问题:
是Echo Events解决问题的唯一机会,还是我忘记做一些事情使showBusy正常工作?
因为我真的不想在zul页面中使用代码,所以如何在viewModel中定义内容?
如果我分配绑定值
disabled="@load('vm.busy')"
到我要在电子邮件发送期间禁用的所有组件,并将客户端showBusy和clearBusy替换为
busy = true; // Clients.showBusy(winFather.getModalWin(), "Please wait...");
...
busy = false; // Clients.clearBusy(winFather.getModalWin());
我遇到了同样的问题,在禁用zul组件之前正在发送电子邮件。看来是同步问题。
最佳答案
你好
我之前也遇到过同样的问题,在我的代码中可以看到我已经在目标组件上覆盖了onClientInfo,因此,如果调用此事件,就可以实现目标。
@Listen("onClick = #addRejectDocumentBtn")
public void openWaiting() {
Clients.showBusy(saleRejectMainPageWin,"please wait...");
saleRejectMainPageWin.addEventListener(Events.ON_CLIENT_INFO, new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
LongOperationExample(); <- here is my long operation
Clients.clearBusy(saleRejectMainPageWin);
}
});
"Here you can call the event"
Events.echoEvent("onClientInfo", saleRejectMainPageWin, null);
}
关于java - ZK showBusy在长时间操作之前调用,但在它之后显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18556872/