Bonjour,
J'ai un souci pour afficher mon objet listCarte de type List à toutes les pages de mon composant <p:dataTable> (PrimeFaces).
Lorsque je valide mon formulaire, mon objet est bien chargé et la 1ère page de ma table s'affiche correctement en signifiant aussi les autres pages.
Par contre lorsque je clique sur mes boutons de pagination, mon bean se relance mais mon objet ne conserve pas ses valeurs.
Je ne dois pas écrire correctement mon carteBean pour conserver mes valeurs.
Voila ma page:
et mon carteBean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" 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:p="http://primefaces.prime.com.tr/ui" template="/WEB-INF/template/viacham.xhtml"> <ui:define name="content"> <h:form prependId="false"> <p:growl id="growl" /> <p:outputPanel id="panelCpt"> <p:panel header="Consultation Compte: " toggleable="true"> <h:panelGrid columns="6" > <h:outputText value="Nom:" /> <h:inputText value="#{carteBean.nom}" /> <h:outputText value="Compte:" /> <h:inputText value="#{carteBean.compte}" ><f:validateLength maximum="7" /></h:inputText> <h:outputText value="Carte:" /> <h:inputText value="#{carteBean.carte}"><f:validateLength maximum="8" /></h:inputText> <h:outputText value="Droit:" /> <h:selectOneMenu> <f:selectItems value="#{carteBean.droitsCarte}"/> </h:selectOneMenu> <h:outputText value="Categorie:" /> <h:selectOneMenu> <f:selectItems value="#{carteBean.categoriesCarte}"/> </h:selectOneMenu> <h:outputText value=" "/> <p:commandButton style="align:center;" value="afficher" update="panelCpt,display" actionListener="#{carteBean.afficherCpt}"/> </h:panelGrid> </p:panel> </p:outputPanel> <p:panel id="display" header="Information" style="margin-top:10px;"> <p:dataTable var="cartes" value="#{carteBean.listCarte}" paginator="true" rows="10" dynamic="true"> <p:column> <f:facet name="header"> <h:outputText value="Nom" /> </f:facet> <h:outputText value="#{cartes.usager.nom}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Tel" /> </f:facet> <h:outputText value="#{cartes.usager.tel1}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Compte" /> </f:facet> <h:outputText value="#{cartes.compte.desCompte}" /> </p:column> </p:dataTable> </p:panel> </h:form> </ui:define> </ui:composition>
J'ai essayé de charger mon objet directement dans le constructeur de mon bean. La pagination fonctionne mais le problème c'est qu'il ne prend pas en compte mes champs de formulaire (nom,carte,compte) et me charge la totalité de ma table en base à chaque fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 package bean; import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import javax.faces.event.ActionEvent; import javax.faces.model.SelectItem; import viacham.bo.Carte; import viacham.bo.CategorieCarte; import viacham.bo.DroitCarte; import viacham.bs.CarteBS; import viacham.bs.CompteBS; @ManagedBean @ViewScoped public class CarteBean extends SecurityBacking implements java.io.Serializable { private String nom; private String compte; private String carte; private List<Carte> listCarte; private Carte selectedCarte; /** Creates a new instance of CarteBean */ public CarteBean() { } public List getCategoriesCarte() { CarteBS carteBS = new CarteBS(); List<SelectItem> list = new ArrayList<SelectItem>(); list.add(new SelectItem(0,"tous")); for(CategorieCarte cC: carteBS.getCategoriesCarte()){ list.add(new SelectItem(cC,cC.getDesCat())); } return list; } public List getDroitsCarte() { CarteBS carteBS = new CarteBS(); List<SelectItem> list = new ArrayList<SelectItem>(); list.add(new SelectItem(0,"tous")); for(DroitCarte dC: carteBS.getDroitsCarte()){ list.add(new SelectItem(dC,dC.getDesDroit())); } return list; } public void afficherCpt(ActionEvent actionEvent) { listCarte = new CompteBS().listCompteResto(nom, carte, compte); } + getter setter...
Si vous avez une idée...?
Merci d'avance
Partager