Comment parcourir une datatable à la maniere d'une collection ??
Comment parcourir une datatable à la maniere d'une collection ??
Bonjour.
Je crois que le problème est inversé": un UIData ne produit pas les données. C'est à toi de les lui fournir et lui il les stocke pour l'affichage.
Donc; au lieu de parcourir un UIData, parcoures ploutôt la liste qui l'a alimenté.
en fait g une table qui contient des inputtexts.
lors de la validation je dois m'assurer que la somme de tous les champs ne depasse pas une valeur.
j'ai fait un binding entre la datatable et le UIDATA. Comme ça lors de la validation, je parcours la UIDATA et je calcule la somme.
Si c'est pas possible, est ce qu'il y a une autre maniere de faire la chose???
Merci
Bonjour.
Tu peux par exemple faire le binding de la valeur des textbox.
Exemple: la table itère sur une liste de personnes, disons:
et tu as une liste de personnes que tu exposes à la page JSF:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Person { String nom; int poids; }
et dans la pge, tu fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 List<Person> persons = new ArrayList<Person>(); persons.add(..); : :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <h:dataTable value="#{bean.persons}" var="person" > <h:column> <h:inputText value="#{person.poids}" /> <h:column> </h:dataTable>
ainsi, après le submit, tu peux itérer sur la liste persons, additionner les poids de chaque personne et vérifier qie c'est < X.
C'est la manière la plus propre pour le faire.
Après, tu peux y aller autrement, mais ce serait sans moi![]()
Tu me proposes de parcourir la liste des données. Mais au moment de la validation la liste des données n'est pas encore mise à jour par JSF. D'apres ce que je sais, le mise à jour du model se fait apres la validation.
Je vais tester seulement des valeurs anciennes.
Bonjour
Pourrais-tu donner un peu ton contexte.
En effet, c'est à toi de fournir la liste de données au composant étendant le UIData. Donc logiquement, tu peux parcourir ta liste sans problème, vu que tu l'as sous la main
Donc en comprenant mieux ton contexte, peut-être nous pourrons mieux t'aider...
Nous sommes tous semblables, alors acceptons nos différences !
--------------------------------------------------------------
Liens : Blog | Page DVP | Twitter
Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
Critiques : Apache Maven
Le contexte est le suivant:
J'initialise une liste avec des elemenst chargés de la base de données. C'est elements sont ensuite affichés dans une datatable. Ces elements sont modifiables dans la datatable, en effet dans les htmlcolumn il y a des html:inputText. La page contient aussi un bouton enregistrer, pour mettre les modifications en base. Cepandant, avant de mettre à jour les données dans la base je dois m'assurer que la somme des valeurs d'une colonne ne depasse pas une valeur max, et ceci via un validateur JSF.
Pour cela, j'ai fait un binding entre la datatable et un objet UIDATA. A la validation, je voudrai parcourir le UIDATA pour valider la saisie.
j'espere que c'est clair comme ça.
Je ne crois pas qu'un validateur JSF pourra répondre à ta requête vu qu'il s'agit de vérifier une liste de valeurs d'un coup.
Donc, rien ne t'empêche de faire comme je te l'ai proposé, et avant d'enrtegistrer dans la base de données, tu fais ton test, et si c'est pas bon, tu retournes à la page de saisie et tu affiches un message d'erreur.
Oui mais si je fait comme tu dis, je perds les valeurs saisies par l'utilisateur. L'utilisateur devra recommencer toute la saisie.
Partager