I want to be able to disable the commandbutton below once it\'s hit and enable it once the event listener runs and msg1 is rendered.
You could do it with help of the onevent
attribute of <f:ajax>
which points to a JavaScript function which handles the JSF Ajax events.
E.g.:
<h:commandButton value="Submit">
<f:ajax execute="@form" render="msg1" listener="#{bean.method}" onevent="handleDisableButton" />
</h:commandButton>
(note that I fixed the wrong EL in listener
as well)
with this JS:
function handleDisableButton(data) {
var buttonElement = data.source; // The HTML DOM element which invoked the ajax event.
var ajaxStatus = data.status; // Can be "begin", "complete" and "success".
switch (ajaxStatus) {
case "begin": // This is called right before ajax request is been sent.
buttonElement.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 when ajax response is successfully processed.
buttonElement.disabled = false;
break;
}
}
If you use richfaces, the a4j:commandButton has the status attribute which prevent this.