Rich: Colonnes - FilterBy
-
20-09-2019 - |
Question
Bonjour !!
J'ai un datatable dynamique et je suis en utilisant des colonnes de RichFaces, mais quand j'attribue la valeur à FilterBy, il ne fonctionne pas. Quelqu'un peut-il m'aider? Malheur est mon code ..
<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>
La solution
Essayez d'ajouter sortBy="#{column.nomeAtributo}"
et sortOrder
à rich:columns
il fonctionnera.
Je suis venu à savoir que nous avons des problèmes sur la version précoce.
S'il vous plaît essayer RF 3.2.1. Je pense qu'il devrait résoudre le problème autrement.
Autres conseils
D'après ce que je peux voir que vous utilisez le mauvais attribut dans filterBy. Vous voulez utiliser l'imbrication pour indiquer où trouver l'élément à trier. Quelque chose comme #{atendimento(column.nomeAtributo)}
, mais je ne suis pas dans un endroit où je peux le tester. Ce que cela fait essentiellement est d'évaluer le nom de la colonne, puis appelle le getter avec le même nom hors de votre objet ligne atendimento
. Désolé si la syntaxe d'imbrication ne fonctionne pas, mais je pense que l'imbrication est votre réponse.
Si #{atendimento[column.nomeAtributo]}
fonctionne pour imprimer la valeur alors c'est ce que vous voulez, mais je voudrais seulement espérer qu'il fonctionne si nomeAtributo est un entier pour le référencement tableau.
Je suis tombé sur un autre problème avec filterBy qui peut causer des problèmes. Nous avons eu le travail filterBy sur les entités dans un certain état d'affaires (actif, expiré, etc.), mais pas dans d'autres. L'état de l'entité n'a rien à voir avec la valeur réelle du filtre.
Quand je un filterMethod et fait le filtrage sur le grain de support il a bien fonctionné. Il est avéré que filterBy soumet le formulaire tout en mon inputText pour le filterMethod je ajaxSingle. Une validation a échoué lorsque vous avez soumis cette forme au total, mais l'erreur de validation a été avalée.