Rich: Colunas - Filterby
-
20-09-2019 - |
Pergunta
Bom Dia!!
Eu tenho um datatable dinâmico e estou usando colunas de richfaces, mas quando atribuo o valor ao filtro, ele não funciona. Alguém pode me ajudar? Ai é meu código ..
<rich:dataTable id="dtAtendimento" value="#{CadastroAtendimentoTecnico.listaAtendimento}" var="atendimento">
<rich:columns index="index" value="#{CadastroAtendimentoTecnico.listaCampos}" var="column" filterBy="#{column.nomeAtributo}" filterEvent="onKeyUp">
<f:facet name="header">
<h:outputText value="#{column.label}"/>
</f:facet>
<h:outputText value="#{atendimento[column.nomeAtributo]}"/>
</rich:columns>
</rich:dataTable>
Solução
Tente adicionar sortBy="#{column.nomeAtributo}"
e sortOrder
para rich:columns
vai funcionar. Cheguei a saber que temos esses problemas na versão inicial. Por favor, tente RF 3.2.1. Eu acho que deveria resolver o problema de outra forma.
Outras dicas
Pelo que posso ver, você está usando o atributo errado no filtro. Você deseja usar o ninho para especificar onde encontrar o elemento para classificar. Algo como #{atendimento(column.nomeAtributo)}
, mas não estou em um lugar em que posso testá -lo. O que isso faz essencialmente é avaliar o nome da coluna e depois chama o getter com o mesmo nome do seu objeto de linha atendimento
. Desculpe se a sintaxe do ninho não funciona, mas acho que o ninho é a sua resposta.
Se #{atendimento[column.nomeAtributo]}
Funciona para imprimir o valor, então é isso que você deseja, mas eu só esperaria que funcione se o NomAtribo for um número inteiro para a referência da matriz.
Eu me deparei com outro problema com o Filterby, que pode causar problemas. Tínhamos o filtro trabalhando em entidades em um determinado estado comercial (ativo, expirado etc.), mas não em outras. O estado da entidade não tinha nada a ver com o valor real do filtro.
Quando usei um filterthod e fiz a filtragem no feijão de apoio, funcionou bem. Aconteceu que o FilterBy envia o formulário inteiro enquanto estiver no meu InputText para o filtermethod que usei Ajaxsingle. Uma validação falhou quando você enviou esse formulário no total, mas o erro de validação foi engolido.