Optimizing filterby in rich:dataTable
spiritfox26 Nov 11, 2010 9:25 AMI'm using a rich:dataTable to list users, the problem is that i have 7800 users in the table but when i filter by a column (name, last name, etc), i have a big delay of 40 seg to recieve the response.
The code:
<rich:dataTable id="items" value="#{usuarioBean.usuariosModel}" var="usuario" rows="15" styleClass="datatableStyle"> <rich:column> <f:facet name="header"> <h:outputText id="a" value="#{msg.idUsuarioLabel}"/> </f:facet> <h:outputText id="aa" value="#{usuario.idUsuario}"/> </rich:column> <rich:column sortBy="#{usuario.nombre}" filterBy="#{usuario.nombre}" filterEvent="onkeyup" filterValue="#{usuarioBean.strNombreFiltro}"> <f:facet name="header"> <h:outputText id="b" value="#{msg.nomUsuarioLabel}" /> </f:facet> <h:outputText id="bb" value="#{usuario.nombre}"/> </rich:column> <rich:column sortBy="#{usuario.apellido}" filterBy="#{usuario.apellido}" filterEvent="onkeyup" filterValue="#{usuarioBean.strApellidoFiltro}"> <f:facet name="header"> <h:outputText id="c" value="#{msg.apeUsuarioLabel}"/> </f:facet> <h:outputText id="cc" value="#{usuario.apellido}"/> </rich:column> <rich:column sortBy="#{usuario.nomUsuario}" filterBy="#{usuario.nomUsuario}" filterEvent="onkeyup" filterValue="#{usuarioBean.strNomUsuFiltro}"> <f:facet name="header"> <h:outputText id="f" value="#{msg.nickUsuarioLabel}"/> </f:facet> <h:outputText id="ff" value="#{usuario.nomUsuario}"/> </rich:column> <rich:column sortBy="#{usuario.reparticion.nomReparticion}" filterBy="#{usuario.reparticion.nomReparticion}" filterEvent="onkeyup" filterValue="#{usuarioBean.strDepartamentoFiltro}"> <f:facet name="header"> <h:outputText id="repUser" value="#{msg.reparticionLabel}"/> </f:facet> <h:outputText id="repUserVal" value="#{usuario.reparticion.nomReparticion}"/> </rich:column> <rich:column styleClass="columnaCentrada" rendered="#{securityBean.modificarUsuario}"> <f:facet name="header"> </f:facet> <h:commandLink id="editUsuario" action="#{usuarioBean.editUsuario}"> <h:graphicImage value="/images/bt_edit.png"/> <rich:toolTip value="#{msg.editLabel}" showDelay="1000"/> </h:commandLink> </rich:column> <rich:column styleClass="columnaCentrada" rendered="#{securityBean.modificarUsuario}"> <f:facet name="header"> </f:facet> <a4j:commandLink id="removeUsuario" oncomplete="#{rich:component('deletePanel')}.show()" limitToList="true" reRender="deletePanel" ajaxSingle="true"> <h:graphicImage value="/images/bt_delete.png"/> <rich:toolTip value="#{msg.removeLabel}" showDelay="1000"/> <a4j:actionparam name="idUsuarioEliminar" value="#{usuario.idUsuario}" assignTo="#{usuarioBean.idUsuarioEliminar}"/> </a4j:commandLink> </rich:column> </rich:dataTable>
<rich:dataTable id="items" value="#{usuarioBean.usuariosModel}"
var="usuario" rows="15" styleClass="datatableStyle">
<rich:column>
<f:facet name="header">
<h:outputText id="a" value="#{msg.idUsuarioLabel}"/>
</f:facet>
<h:outputText id="aa" value="#{usuario.idUsuario}"/>
</rich:column>
<rich:column sortBy="#{usuario.nombre}" filterBy="#{usuario.nombre}" filterEvent="onkeyup" filterValue="#{usuarioBean.strNombreFiltro}">
<f:facet name="header">
<h:outputText id="b" value="#{msg.nomUsuarioLabel}" />
</f:facet>
<h:outputText id="bb" value="#{usuario.nombre}"/>
</rich:column>
<rich:column sortBy="#{usuario.apellido}" filterBy="#{usuario.apellido}" filterEvent="onkeyup" filterValue="#{usuarioBean.strApellidoFiltro}">
<f:facet name="header">
<h:outputText id="c" value="#{msg.apeUsuarioLabel}"/>
</f:facet>
<h:outputText id="cc" value="#{usuario.apellido}"/>
</rich:column>
<rich:column sortBy="#{usuario.nomUsuario}" filterBy="#{usuario.nomUsuario}" filterEvent="onkeyup" filterValue="#{usuarioBean.strNomUsuFiltro}">
<f:facet name="header">
<h:outputText id="f" value="#{msg.nickUsuarioLabel}"/>
</f:facet>
<h:outputText id="ff" value="#{usuario.nomUsuario}"/>
</rich:column>
<rich:column sortBy="#{usuario.reparticion.nomReparticion}" filterBy="#{usuario.reparticion.nomReparticion}" filterEvent="onkeyup" filterValue="#{usuarioBean.strDepartamentoFiltro}">
<f:facet name="header">
<h:outputText id="repUser" value="#{msg.reparticionLabel}"/>
</f:facet>
<h:outputText id="repUserVal" value="#{usuario.reparticion.nomReparticion}"/>
</rich:column>
<rich:column styleClass="columnaCentrada" rendered="#{securityBean.modificarUsuario}">
<f:facet name="header">
</f:facet>
<h:commandLink id="editUsuario" action="#{usuarioBean.editUsuario}">
<h:graphicImage value="/images/bt_edit.png"/>
<rich:toolTip value="#{msg.editLabel}" showDelay="1000"/>
</h:commandLink>
</rich:column>
<rich:column styleClass="columnaCentrada" rendered="#{securityBean.modificarUsuario}">
<f:facet name="header">
</f:facet>
<a4j:commandLink id="removeUsuario" oncomplete="#{rich:component('deletePanel')}.show()" limitToList="true" reRender="deletePanel" ajaxSingle="true">
<h:graphicImage value="/images/bt_delete.png"/>
<rich:toolTip value="#{msg.removeLabel}" showDelay="1000"/>
<a4j:actionparam name="idUsuarioEliminar" value="#{usuario.idUsuario}" assignTo="#{usuarioBean.idUsuarioEliminar}"/>
</a4j:commandLink>
</rich:column>
</rich:dataTable>
Thanks in advanced!