rich:dataTable filtering loses focus when inside <a4j:output
grzechom Feb 4, 2009 6:31 PMHi everyone,
today I have found one interesting issue I cannot cope with.
I used this source, from rich demo page:
<rich:dataTable value="#{dictionaryEditor.dictionaryEntries}" var="cap" rows="20" reRender="ds" id="simpletable"> <f:facet name="header"> <rich:columnGroup> <rich:column colspan="2" > <h:outputText value="Filtering Example"/> </rich:column> <rich:column breakBefore="true"> <h:outputText value="State Name"/> </rich:column> <rich:column> <h:outputText value="State Capital"/> </rich:column> </rich:columnGroup> </f:facet> <rich:column filterBy="#{cap.paramId}" filterEvent="onkeyup"> <f:facet name="header"> <h:outputText value=" " title="Hack due to bug. Shuold be remoevd till release"></h:outputText> </f:facet> <h:outputText value="#{cap.paramId}"/> </rich:column> <rich:column filterBy="#{cap.paramValue}" filterEvent="onkeyup"> <h:outputText value="#{cap.paramValue}"/> </rich:column> <f:facet name="footer"> <rich:datascroller id="ds" renderIfSinglePage="false"></rich:datascroller> </f:facet> </rich:dataTable>
and it work pretty well.
Unfortunately, my real table should be within a page with many of a4j:commandButtons and a4j:support. In such a case I have always been using:
<a4j:outputPanel ajaxRendered="true"> <a4j:commandButton ... /> <h:selectOneMenu ....> <a4j:support ..... /> </h:selectOneMenu .....> </a4j:outputPanel>and didn't care about reRender attributes. So, if I surround my whole page with this outputPanel suddenly rich:dataTable stops working. Because of 'onkeyup' event I can put only one letter into column text input field (filter) and then ajax request is sent. When answer becomes my table rerenders, but i lose focus on this input. In that way, I can only filter by first sign or click somewhere into input to focus it after every letter.
What's most interesting when I substituted a4j:outputPanel with rich:panel with id and specifiy this id in every a4j component reRender attribute - the same situation happens (loses focus). Looks like there are double ajax request or sth?
I tried with <a4j:queue /> but it didn't seem to work. Do you have any ideas how to use default rich:dataTable filtering mechanizm when its surrounded by a4j:outputPanel ?
Thanks in advance,
Matthew