单击事件处理程序
Click Event handler
当我单击按钮时,单击事件处理程序执行代码。如果错误(如果浏览器挂起)我点击按钮两次代码被执行 twice.i 不希望这种情况发生。
有什么建议可以阻止这种情况吗?
我想我应该使用日程表或计时器,但我不确定
下面是代码:
public void onSendButtonClicked() {
disableButtons();
eventBus.fireEvent(new SendEmcsDeclarationEvent(getDeclaration(), getMsgType()));
}
我能想到的最好方法是 enable/disable 按钮本身,以确保处理程序中的代码在上一次调用完成之前不会再次调用。
public void onSendButtonClicked()
{
try
{
disableButtons();
eventBus.fireEvent(new SendEmcsDeclarationEvent(getDeclaration(), getMsgType()));
}
catch (Exception ex)
{
throw ex;
}
finally
{
enableButtons();
}
}
您可以 - 正如 Abdullah 提到的那样 - disable/enable GWT 中的每个小部件
widget.setEnable(false)
和
widget.setEnable(true)
.
如果你想锁定整个屏幕,创建一个模态弹出窗口,在按下按钮后显示它,并在代码完成后隐藏它。
public void onSendButtonClicked() {
myProgessBar.show();
eventBus.fireEvent(new SendEmcsDeclarationEvent(getDeclaration(), getMsgType()));
myProgressBar.hide();
}
如果您使用异步调用,则必须在回调中隐藏进度条。在这种情况下,finally 命令可能会在执行回调之前执行。在您的情况下,创建 ShowProgressBarEvent 和 HideProgressbarEvent 可能是个好主意,这样您就可以在整个应用程序中使用进度条。
如果您使用的是小部件库 f.e.: GXT,您会发现一个可以使用的 ProgressBar。
希望对您有所帮助。
当我创建一个按钮时,我总是同时添加一个动画 gif (ajaxloader)。
单击按钮时,我使按钮不可见,ajax加载程序可见。
操作完成后,我让 ajaxloader 不可见,按钮可见。
通过这种方式,用户可以获得一些视觉反馈,表明正在发生某些事情(禁用按钮时你不会得到什么),而不是整个应用程序都被阻止(就像模态一样),这是加分之一使用 ajax.
当我单击按钮时,单击事件处理程序执行代码。如果错误(如果浏览器挂起)我点击按钮两次代码被执行 twice.i 不希望这种情况发生。 有什么建议可以阻止这种情况吗?
我想我应该使用日程表或计时器,但我不确定
下面是代码:
public void onSendButtonClicked() {
disableButtons();
eventBus.fireEvent(new SendEmcsDeclarationEvent(getDeclaration(), getMsgType()));
}
我能想到的最好方法是 enable/disable 按钮本身,以确保处理程序中的代码在上一次调用完成之前不会再次调用。
public void onSendButtonClicked()
{
try
{
disableButtons();
eventBus.fireEvent(new SendEmcsDeclarationEvent(getDeclaration(), getMsgType()));
}
catch (Exception ex)
{
throw ex;
}
finally
{
enableButtons();
}
}
您可以 - 正如 Abdullah 提到的那样 - disable/enable GWT 中的每个小部件
widget.setEnable(false)
和
widget.setEnable(true)
.
如果你想锁定整个屏幕,创建一个模态弹出窗口,在按下按钮后显示它,并在代码完成后隐藏它。
public void onSendButtonClicked() {
myProgessBar.show();
eventBus.fireEvent(new SendEmcsDeclarationEvent(getDeclaration(), getMsgType()));
myProgressBar.hide();
}
如果您使用异步调用,则必须在回调中隐藏进度条。在这种情况下,finally 命令可能会在执行回调之前执行。在您的情况下,创建 ShowProgressBarEvent 和 HideProgressbarEvent 可能是个好主意,这样您就可以在整个应用程序中使用进度条。
如果您使用的是小部件库 f.e.: GXT,您会发现一个可以使用的 ProgressBar。
希望对您有所帮助。
当我创建一个按钮时,我总是同时添加一个动画 gif (ajaxloader)。
单击按钮时,我使按钮不可见,ajax加载程序可见。 操作完成后,我让 ajaxloader 不可见,按钮可见。
通过这种方式,用户可以获得一些视觉反馈,表明正在发生某些事情(禁用按钮时你不会得到什么),而不是整个应用程序都被阻止(就像模态一样),这是加分之一使用 ajax.