Clicking while reRender gives NoSuchUIElement
tomba Jul 9, 2010 12:24 PMHi,
I find that when you click a certain element which is about to rerender you can sometimes get a NoSuchElementException.
<a4j:queue id="queue"/> <table> <tr> <td> <h:selectOneListbox size="1" rendered="#{quoteVehicle.number_of_templates > 3}" id="qtemplate" value="#{quoteVehicle.QTemplateId}" valueChangeListener="#{quoteVehicle.changeQTemplateSelect}"> <a4j:support event="onchange" eventsQueue="queue" reRender="filtermessage,fueltypetable,energylabeltable,maketable,bodystyletable,modeltable,typetable,carpic" ajaxSingle="true" /> <f:selectItems value="#{quoteVehicle.QTemplateItems}"/> </h:selectOneListbox> </td> </tr> </table> <t:div id="maketable"> <table> <tr height="20"> <td> <t:div id="filtermessage_template"> <h:outputText styleClass="message" value="#{msg.vehicle_select_template}" rendered="#{!quoteVehicle.templateSelected}" /> </t:div> <h:panelGrid columns="2" cellpadding="0" cellspacing="0"> <h:panelGroup> <t:selectOneRadio layout="spread" id="make" rendered="#{quoteVehicle.templateSelected}" value="#{quoteVehicle.makeId}" valueChangeListener="#{quoteVehicle.changeMakeSelect}" immediate="true" required="#{quoteVehicle.vehicleRequired}" disabled="#{!quoteVehicle.vehicleMakeEnabled}"> <a4j:support event="onclick" reRender="filtermessage,bodystyletable,modeltable,fueltypetable,energylabeltable,typetable,carpic" ajaxSingle="true" limitToList="true" immediate="true" /> <f:selectItems value="#{quoteVehicle.vehicleMakeItems}" /> </t:selectOneRadio> <t:dataTable newspaperColumns="7" cellpadding="0" cellspacing="0" var="row" value="#{quoteVehicle.dataModel}" rowIndexVar="index"> <h:column> <t:radio for=":quote:make" index="#{index}" /> </h:column> </t:dataTable> </h:panelGroup> </h:panelGrid> </td> </tr> </table>
In the above code, when I select an item in the dropdown, the list of radiobuttons gets updates and rerendered.
However, if I change the dropdown value and then click a radiobutton before that group is rerendered, I get the Exception.
Now my question: is there a way I can prevent this exception, ie prevent handling the click on a radiobutton when that group is already waiting to get rerenderd.