<rich:dataTable> usando filterBy

Boa tarde pessoal,

Estou tentando colocar um filtro na minha dataTable mas não está funcionando, peguei o exemplo direto do site de demos do rich e adaptei.

<h:form id="form1">
            						<rich:dataTable value="#{identificacaoBean.listIdentificacao}" var="id">
            							<f:facet name="header">
				                			<rich:columnGroup>
				                    			<rich:column breakBefore="true">
				                        			<h:outputText value="#{msg.lbl_codigo}"/>
				                    			</rich:column>
				                    			<rich:column>
				                        			<h:outputText value="#{msg.lbl_descricao}"/>
				                    			</rich:column>
				                			</rich:columnGroup>
				            			</f:facet>
				            
				            			<rich:column filterBy="#{id.codigo_identificacao}" 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="#{id.codigo_identificacao}"/>
           					 			</rich:column> 
				            			<rich:column filterBy="#{id.descricao}" filterEvent="onkeyup">
                							<h:outputText value="#{id.descricao}"/> 
	       					 			</rich:column>
        							</rich:dataTable>
                				</h:form>

Algúem pode me ajudar…

Obrigado

Estou tendo um problema parecido:
O filtro do rich:dataTable até funcionou, porém somente no Firefox. No IE (minha versão é a 6) não funciona. Não ocorre nenhum erro, nem de compilação, nem de runtime, nem de script, só não filtra. Fiz igualzinho está no exemplo. Estou usando Tomcat e Facelets.

E ae Nando!

Esse componemte do rich faces está com alguns bugs, tive sérios problemas com ele, mas até que deu pra dar um jeitinho :slight_smile:

Mas que acontece com sua table ? Ele simplesmente não filtra ? Ou da erro qual o erro ?

PS: pesito :arrow: na minha versão do IE (7) funciona blzinha…

At.

Então simplesmente não filtra os dados… A consulta é executada pelo que vi no console do eclipse.

Valeu

Estranho… :shock:

A únca diferença é q no meu esta tudo dentro de um a4j:form, mas no exemplo ta dentro de um h:form msm…

Eu acho q ele n deve ta reRenderizando a table, tenta adicionar um a4j:support pra forçar isso:

<a4j:support event="onkeyup" reRender="idDaSuaTable"/>

PS: Eu testei com o h:form e funfo blzinha

Cara não funfo não… não funciona nem o firefox nem IE.
Mto estranho mesmo :roll:

Valeu

Eklam,

tentei usar o a4j:form e o a4j:support como vc indicou ao Nando, mas mesmo assim não obtive sucesso com o IE 6 (não testei em outra versão). Acho que ainda não será possível usar o filtro do componente rich:dataTable, ele ainda não está “maduro”.

É realmente ele ainda tem serios problemas, tanto que me foi contra indicado atualizar a versão mais atual (3.2.1 SNAPSHOT) pois n está funcionando o filtro ainda…

Eu estou usando a versão do 3.2.0 SR1 do Rich Faces

O meu tbm, mas eu nem teste no IE6

Bom dia pessoal,

Eu sei que já faz um tempo que este post foi colocado, mas eu tive o mesmo problema com o filter e um amigo meu Emilio, conseguiu resolver. Para que funcione basta retirar o atributo prependId="false" do form onde está o seu dataTable porque ele impossibilita o refresh da table quando o campo do filtro é preenchido.

Abraços

Cara esse richFaces ta realmente bugado, eu tava roando um sistema que fiz pra uma academia, e funcionava o filtro da tela de consulta de clientes, e da tela de consulta de pagamentos. Dai eu criei uma tela nova de incluir pagamentos, que não tem nada a ver com as outras, nem os MB chamados são os mesmos e, simplesmente parou de funcionar o filtro, tentei trocar o tipo do form, colocar o a4j:support e nada funciona. Engraçado que na tela nova de incluir o filtro funciona, mas nas outras antigas (que funcionavam) agora quando você digita uma letra, a grid fica em branco. Não achando nada referente a letra digitada, sendo que possui registros, ai quando você apaga o que digitou no filtro ele não volta a mostrar os dados da grid, só dando F5, vai entender =/

Se estiver precisando F5 para refresh na tela talvez esteja faltando um re-render na tabela.

Não po, é que quando você da F5 ele joga vc pra home do sistema, logo entrnado na tela, tudo inicia novamente xD
mas eu fiz na mao o script já resolvi xD
obrigado o rich ta com uns probleminhas msm

Não sei se ajuda, mas em um projeto que estou tivemos o mesmo problema.
No firefox há o reRender da tabela (com breakpoint ele entra no Bean a cada letra digitada), já no IE 6 e 7 não é feita a chamada ao método quando digita-se algo.
No caso que descrevo estamos usando facelets, e usamos o <ui:include> para importar as paginas.
Um de nossas paginas, dentro de um menu, possui uma dataTable com o filterBy, que inicialmente não funcionava dentro da pagina que a importa. Segue a pagina importadora (menu):

component-menu.jsf
&lt;jsp:root xmlns="http://www.w3.org/1999/xhtml"
	xmlns:jsp="http://java.sun.com/JSP/Page"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:c="http://java.sun.com/jstl/core"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"&gt;

	&lt;f:loadBundle basename="ApplicationMessages" var="msg" /&gt;

	&lt;f:view&gt;
		&lt;rich:tabPanel switchType="ajax" styleClass="tab-panel"&gt;
			&lt;rich:tab label="#{msg.label_tools}"&gt;
			&lt;h:form id="componentMenu"&gt;
				&lt;rich:panelMenu style="width:100%" mode="none"
								iconExpandedGroup="disc" iconCollapsedGroup="disc" 
						        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" 
						        iconCollapsedTopGroup="chevronDown" iconCollapsedTopPosition="right"&gt;
					&lt;rich:panelMenuGroup label="#{msg.label_tools_criteria}" styleClass="panelMenuGroup"&gt;
						&lt;rich:panelMenuItem icon="none" styleClass="panelMenuItem"&gt;
							&lt;ui:include src="/jsf/criterion/menu/criterion-menu.jsf" /&gt;
						&lt;/rich:panelMenuItem&gt;
        			&lt;/rich:panelMenuGroup&gt;
				&lt;/rich:panelMenu&gt;
				&lt;/h:form&gt;
			&lt;/rich:tab&gt;
		&lt;/rich:tabPanel&gt;
	&lt;/f:view&gt;
&lt;/jsp:root&gt;

E esta é a pagina que está sendo importada:

criterion-menu.jsf
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;jsp:root xmlns="http://www.w3.org/1999/xhtml"
	xmlns:jsp="http://java.sun.com/JSP/Page"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:c="http://java.sun.com/jstl/core"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"&gt;

	&lt;f:loadBundle basename="ApplicationMessages" var="msg" /&gt;

	&lt;rich:dataTable value="#{CriterionBean.allCriterionMenu}" var="criterion" reRender="ds" id="simpletable"&gt;
		&lt;f:facet name="header"&gt;
			&lt;rich:columnGroup&gt;
				&lt;rich:column&gt;
					&lt;h:outputText value="#{msg.label_criterion_menu_type}" /&gt;
				&lt;/rich:column&gt;
				&lt;rich:column&gt;
					&lt;h:outputText value="#{msg.label_criterion_menu_name}" /&gt;
				&lt;/rich:column&gt;
			&lt;/rich:columnGroup&gt;
		&lt;/f:facet&gt;
		&lt;rich:column filterBy="#{criterion.enabledFlag}" filterEvent="onkeyup"&gt;
			&lt;h:outputText value="#{criterion.enabledFlag}" /&gt;
		&lt;/rich:column&gt;
		&lt;rich:column filterBy="#{criterion.name}" filterEvent="onkeyup"&gt;
			&lt;h:outputText value="#{criterion.name}" /&gt;
		&lt;/rich:column&gt;
	&lt;/rich:dataTable&gt;
&lt;/jsp:root&gt;

Esta versão já esta com o problema do filterBy corrigido.
Originalmente o <f:view> estava em ambas as paginas, e o <h:form> estava na segunda pagina (a importada).
Como se pode ver, o <f:view> passou a ficar na pagina que importa (a primeira), assim como o <h:form>. Na pagina importada (a segunda) somente há o código.
Não sei está sendo o caso, mas isto resolveu o nosso problema do filterBy.
Só para constar, testamos e tentamos todas as soluções daqui e de outros foruns. Nenhum funcionou, pois não era aplicavél neste cenário.

Pessoal,

Estou com um problema no filtro. Quando digito no campo para filtragem o form trava ou deixa digitar letra por letra.
Abaixo o código. Já tentei as dicas do forum, mas não consegui resolver.

&lt;ui:define name="searchlistBlock"&gt;
            &lt;rich:spacer  height="20" /&gt;
            &lt;h:panelGrid columns="1" columnClasses="col4"&gt;
                &lt;h:column&gt;
                    &lt;rich:spacer witch="20" /&gt;
                    &lt;a4j:commandButton value="Pesquisar" action="#{CidadeAction.getCidades}"/&gt;
                    &lt;a4j:commandButton value="Adicionar" action="#{CidadeAction.prepareAdicionar}" immediate="true"/&gt;
                &lt;/h:column&gt;
            &lt;/h:panelGrid&gt;
            &lt;rich:spacer  height="20" /&gt;
            &lt;rich:dataTable width="483" id="cidadeList" rows="10" reRender="ds" ajaxSingle="true"
                            rowClasses="odd-row,even-row"
                            columnClasses="col3" value="#{CidadeAction.cidades}" var="row"&gt;
                &lt;rich:column sortBy="#{row.codigo}" &gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText styleClass="headerText" value="Código" /&gt;
                    &lt;/f:facet&gt;
                    &lt;h:outputText value="#{row.codigo}" /&gt;
                &lt;/rich:column&gt;
                &lt;rich:column sortBy="#{row.descricao}"  filterBy="#{row.descricao}" filterEvent="onkeyup"&gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText styleClass="headerText" value="Descrição" /&gt;
                    &lt;/f:facet&gt;
                    &lt;h:outputText value="#{row.descricao}" /&gt;
                &lt;/rich:column&gt;
                &lt;rich:column sortBy="#{row.estado}"  filterBy="#{row.estado}" filterEvent="onkeyup" &gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText styleClass="headerText" value="Estado" /&gt;
                    &lt;/f:facet&gt;
                    &lt;h:outputText value="#{row.estado}" /&gt;
                &lt;/rich:column&gt;
                &lt;rich:column witch="30" &gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText styleClass="headerText" value="Ações" /&gt;
                    &lt;/f:facet&gt;
                    &lt;span&gt;
                        &lt;a4j:commandLink value="editar" action="#{CidadeAction.prepareEditar}" immediate="true"&gt;
                            &lt;f:setPropertyActionListener value="#{row}" target="#{CidadeAction.cidade}"/&gt;
                        &lt;/a4j:commandLink&gt;
                    &lt;/span&gt;
                    &lt;span&gt;
                        &lt;a4j:commandLink value="excluir" action="#{CidadeAction.excluir}" immediate="true"&gt;
                            &lt;f:setPropertyActionListener value="#{row}" target="#{CidadeAction.cidade}"/&gt;
                        &lt;/a4j:commandLink&gt;
                    &lt;/span&gt;
                &lt;/rich:column&gt;
                &lt;f:facet name="footer" styleClass="footerText" &gt;
                    &lt;rich:datascroller align="center" id="ds" renderIfSinglePage="false" maxPages="20" /&gt;
                &lt;/f:facet&gt;
            &lt;/rich:dataTable&gt;
            &lt;rich:spacer  height="20" /&gt;
        &lt;/ui:define&gt;
        &lt;!-- define addUpdateBlock --&gt;
        &lt;ui:define name="addUpdateBlock"&gt;
            &lt;rich:spacer height="20" /&gt;
            &lt;h:panelGrid  witch="300"  columns="3" id="panel2" binding="#{CidadeAction.panelForm}" columnClasses="col2"&gt;
                &lt;h:outputLabel value="Descrição:"/&gt;
                &lt;h:column&gt;
                    &lt;h:inputText value="#{CidadeAction.cidade.descricao}" maxlength="60" size="60" required="true" id="descricao"
                                 requiredMessage="Campo Descrição é obrigatório." /&gt;
                &lt;/h:column&gt;
                &lt;h:column&gt;
                    &lt;h:message for="descricao" errorStyle="color: darkred;"/&gt;
                &lt;/h:column&gt;
                &lt;h:outputLabel value="Estado:"/&gt;
                &lt;h:column&gt;
                    &lt;rich:comboBox id="estado" value="#{CidadeAction.cidade.estado}" maxlength="2" size="2" defaultLabel="MG" required="true"
                                   requiredMessage="Campo Estado é obrigatório." selectFirstOnUpdate="false" &gt;
                        &lt;f:selectItem itemValue="GO"  /&gt;
                        &lt;f:selectItem itemValue="MG"/&gt;
                        &lt;f:selectItem itemValue="RJ"/&gt;
                        &lt;f:selectItem itemValue="SP"/&gt;
                    &lt;/rich:comboBox&gt;
                &lt;/h:column&gt;
                &lt;h:column&gt;
                    &lt;h:message for="estado" errorStyle="color: darkred;"/&gt;
                &lt;/h:column&gt;
            &lt;/h:panelGrid&gt;
            &lt;rich:spacer height="20" /&gt;
            &lt;a4j:commandButton value="Adicionar" action="#{CidadeAction.adicionar}" rendered="#{CidadeAction.adicionarState}"/&gt;
            &lt;a4j:commandButton value="Salvar" action="#{CidadeAction.editar}" rendered="#{CidadeAction.editarState}"/&gt;
            &lt;a4j:commandButton value="Voltar" action="#{CidadeAction.voltar}" immediate="true"/&gt;
            &lt;rich:spacer height="20" /&gt;
        &lt;/ui:define&gt;

Gostaria da ajuda de vocês para resolver o problema.

Abs

Amigo,

Qual conteiner e qual a versão das bibliotecas do richFaces está utilizando?

Att.

Estou usando a versão 3.3.0 GA

Então com esta versão da biblioteca poderá ter problemas se o Jboss for 4.2.2, eu tive que utilizar o Jboss 4.2.3 ou então trocar as libs do JSF que ficam na pasta :

jboss-4.2.2.GA\server\default\deploy\jboss-web.deployer\jsf-libs

para as libs do 4.2.3

galera…preciso saber se alguem já trabalhou com esse filterBy utilizando datas…
aki no meu sistema ele faz a pesquisa com todos os campos sem problemas, porém o campo de data simplesmente não funciona…