是的,当然有。你只需要通过一个命令按钮来改变命令链接,因为JSF命令链接并不能被JS的方式取消。如有必要,可以使用一些CSS来使按钮看起来更好。
完成之后,您可以使用<f:ajax onevent>
来侦听ajax事件。在ajax请求开始时,您可以禁用命令按钮。在ajax请求成功后,您可以重新启用命令按钮。
因此,考虑到本次活动功能监听器示例,
function handleDisableButton(data) {
var button = document.getElementById("formId:buttonId");
switch (data.status) {
case "begin": // This is called right before ajax request is been sent.
button.disabled = true;
break;
case "complete": // This is called right after ajax response is received.
// We don't want to enable it yet here, right?
break;
case "success": // This is called right after update of HTML DOM.
button.disabled = false;
break;
}
}
或者更短,但也许很难解释对于初学者:
function handleDisableButton(data) {
document.getElementById("formId:buttonId").disabled = (data.status != "success");
}
可以按如下方式执行所需的要求:
<f:ajax ... onevent="handleDisableButton" />