Bonjour,
J'ai un simple formulaire avec 2 champs de saisie et une liste pour sélectionner ou supprimer un enregistrement en l’occurrence un titre (monsieur, madame...).
J'arrive à ajouter et à supprimer sans pb et en plus lorsque j'ajoute ou je supprime cela va bien mettre à jour ma liste.
Le pb : lorsque j'ai supprimé tous mes enregistrements, je ne peux plus en ajouter, je n'ai pas de message d'erreur particulier, je ne rentre meme pas dans la methode de mon managed bean, encore moins dans mon business bean. Alors qu'au debut lorsque ma table est vide je n'ai pas de pb.
Je soupçonne le cycle de vie de jsf, car lorsque je vide mon cache cela refonctionne, mais bon débutant dans cette techno. si qqn à une idée, merci par avance.
J'utilise JBOSS6, JSF2 et RF4.
Mon xhtml :
Mon managed bean :
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
84
85
86
87
88
89
90
91
92
93
94 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <ui:composition template="/templates/modele.xhtml"> <ui:define name="head"> <h:outputText value="Inscription" /> </ui:define> <ui:define name="body"> <rich:tabPanel switchType="client" id="inscription" headerPosition="top" headerLocation="center" selectedTab="#{administrationController.selectedTab}"> <rich:tab header="#{i18n.ADMINISTRATION}" name="administration"> <h:form id="fAdministration"> <h:panelGrid columns="2" columnClasses="admin-left,admin-right" width="100%"> <!--********************************************** MENU ***********************************************--> <rich:panelMenu style="width:200px" itemMode="ajax" groupMode="ajax" groupExpandedLeftIcon="triangleUp" groupCollapsedLeftIcon="triangleDown" topGroupExpandedRightIcon="chevronUp" topGroupCollapsedRightIcon="chevronDown" itemLeftIcon="disc" itemChangeListener="#{administrationController.updateCurrent}" activeItem="#{administrationController.selectedTab}"> <rich:panelMenuGroup label="#{i18n.DONNEES}" render="gDetails"> <rich:panelMenuItem id="commune" label="Commune" name="commune" /> <rich:panelMenuItem id="rue" label="Rue" name="rue" render="gRue"/> <rich:panelMenuItem id="bis" label="Bis/Ter..." name="bis" /> <rich:panelMenuItem id="titre" label="Titre" name="titre" /> <rich:panelMenuItem id="service" label="Service" name="service" /> <rich:panelMenuItem id="natureInscription" label="Nature de l'inscription" name="natureInscription" /> <rich:panelMenuItem id="natureTiers" label="Tiers" name="natureTiers" /> <rich:panelMenuItem id="adistance" label="Mode d'inscription" name="adistance" /> </rich:panelMenuGroup> </rich:panelMenu> <!--********************************************** AFFICHAGE CONDITIONNE PAR MENU ***********************************************--> <a4j:outputPanel ajaxRendered="true"> <rich:tabPanel switchType="client"> <rich:tab header="#{administrationController.selectedTab}"> <!-- TITRE --> <h:panelGroup id="gTitre" rendered="#{administrationController.bTitre}" layout="block"> <h:panelGrid columns="2" columnClasses="bold" width="100%"> <h:outputText value="#{i18n.TITRE}" /> <rich:inplaceInput id= "inputTitre" value="#{administrationController.titre}" defaultLabel="#{i18n.CLICNEWTITRE}"/> <h:outputText value="#{i18n.ABREGE}" /> <rich:inplaceInput id="inputAbrege" value="#{administrationController.abrege}" defaultLabel="#{i18n.CLICNEWABREGE}"/> <h:outputText value="#{i18n.LISTETITRES}"/> <rich:inplaceSelect defaultLabel="#{i18n.SELECTIONVALEUR}" value="#{administrationController.titreId}"> <f:selectItems value="#{administrationController.titresList}" /> </rich:inplaceSelect> </h:panelGrid> </h:panelGroup> <!-- BOUTONS AJOUTER/SUPPRIMER/MODIFIER --> <h:panelGroup layout="block"> <h:panelGrid columns="3"> <a4j:commandButton id="ajouter" value="Ajouter" action="#{administrationController.ajouter}" /> <a4j:commandButton id="modifier" value="Modifier" action="#{administrationController.modifier}" /> <a4j:commandButton id="supprimer" value="Supprimer" action="#{administrationController.supprimer}" /> </h:panelGrid> </h:panelGroup> </rich:tab> </rich:tabPanel> </a4j:outputPanel> </h:panelGrid> </h:form> </rich:tab> </rich:tabPanel> </ui:define> </ui:composition> </html>
Mon bean :
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 ... public void ajouter(){ System.out.println("====> AJOUTER SELECTEDTAB " + selectedTab.toString()+" voir bis : "+bis); if (selectedTab.equals("commune")) { ville.ajouter(commune, cp); setCommune(null); setCp(null); } else if (selectedTab.equals("bis")) { bisBean.ajouter(bis); } else if (selectedTab.equals("rue")) { if(multi.getMultiCollectivite()) rueBean.ajouter(rue, Integer.parseInt(communeId)); else rueBean.ajouter(rue, ville.villeId()); } else if (selectedTab.equals("titre")) { titreBean.ajouter(titre, abrege); } else System.out.println("----> pas dans le if de l'ajouter " + selectedTab.toString()); } public void modifier(){ System.out.println("====> MODIFIER SELECTEDTAB " + selectedTab.toString()); if (selectedTab.equals("commune")) { ville.modifier(Integer.parseInt(communeId), commune, cp); } else if (selectedTab.equals("bis")) { bisBean.modifier(bisId, bis); } else if (selectedTab.equals("rue")) { rueBean.modifier(Integer.parseInt(rueId),rue); } else if (selectedTab.equals("titre")) { titreBean.modifier(Integer.parseInt(titreId), titre, abrege); } else System.out.println("----> pas dans le if de modifier " + selectedTab.toString()); } public void supprimer(){ System.out.println("====> SUPRIMER SELECTEDTAB " + selectedTab.toString()); if (selectedTab.equals("commune")) { System.out.println("********************* supprimer commune "); ville.supprimer(Integer.parseInt(communeId)); System.out.println("**** ok on passe "); setCommune(null); setCp(null); } else if (selectedTab.equals("bis")) { System.out.println("supprimer iBbis "); bisBean.supprimer(bisId); } else if (selectedTab.equals("rue")) { System.out.println("ajouter rue: "+commune); rueBean.supprimer(Integer.parseInt(rueId)); this.getRuesList(); } else if (selectedTab.equals("titre")) { titreBean.supprimer(Integer.parseInt(titreId)); } else System.out.println("----> pas dans le if de l'ajouter " + selectedTab.toString()); } ...
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 import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.faces.model.SelectItem; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import com.galhauban.geriex.TitreBean; @Stateless @LocalBean public class TitreBean implements Serializable { private static final long serialVersionUID = 1L; @PersistenceContext (unitName = "GeriexEJB", name = "GeriexEJB") private EntityManager em; private List<TitreEntity> titresList = new ArrayList<TitreEntity>(); private List<SelectItem> titresListSelect = new ArrayList<SelectItem>(); public TitreBean(){}; /** * Permet en fonction de l'ID de retourner le libelle d'un titre * En fonction du parametre label on retourne le titre complet ou l'abrege * Indiquer, en minuscule, au niveau du parametre label le champ de la base (sans le prefixe) * @return */ public String titreLabel(Integer id, String label){ Query qTitre = em.createQuery("select v from TitreEntity v where titId=:id") .setParameter("id", id); TitreEntity titre = (TitreEntity) qTitre.getSingleResult(); if (label.equals("libelle")) return(titre.getTitLibelle()); else if (label.equals("abrege")) return(titre.getTitAbrege()); else return("titreLabel : aucune donnée"); } /** * Retourne la liste des titres * @return */ public List<SelectItem> listTitre(){ titresList.clear(); titresList = em.createQuery("select v from TitreEntity v").getResultList(); if (null != titresList && titresList.size()>0){ for(TitreEntity titres : titresList){ titresListSelect.add(new SelectItem(titres.getTitId().toString() , titres.getTitLibelle().toString())); } } return titresListSelect; } public void ajouter(String libelle, String abrege){ TitreEntity titre = new TitreEntity(); titre.setTitLibelle(libelle); titre.setTitAbrege(abrege); em.persist(titre); } public void modifier(Integer id, String libelle, String abrege){ TitreEntity titre = em.find(TitreEntity.class, id); titre.setTitLibelle(libelle); titre.setTitAbrege(abrege); em.merge(titre); } public void supprimer(Integer id){ TitreEntity titre = em.merge(em.find(TitreEntity.class, id)); em.remove(titre); } //GETTER SETTER
Cordialement
Couse1
Partager