IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

SelectOneMenu problème de liaison avec un Bean


Sujet :

JSF Java

  1. #1
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2007
    Messages : 94
    Par défaut SelectOneMenu problème de liaison avec un Bean
    Bonjour à tous, je débute avec JSF (que je couple avec spring et hibernate) pour un projet.
    J'ai deux tables Groupement et Localite liées par une relation un à plusieurs: un Groupement possède une et une seule localité. A une localité correspond plusieurs groupements.

    Sur mon formulaire de création de Groupement je sélectionne la localité via un combo. (selectOneMenu)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:outputLabel value="Localité" for="cbprofondeur" /><h:selectOneMenu id="cblocalite"  value="#{groupementBean.currentGp.localite}" >
    	 	<f:selectItems value="#{localiteBean.listeLoc}" var="loc"  itemValue="#{loc.idlocalite}" itemLabel="#{loc.libelle}" />
    	 	</h:selectOneMenu>	 	
    	 </h:panelGrid>
    	 <h:panelGroup>
    	 	<h:commandButton value="Enregistrer" action="#{groupementBean.saveGp}" />
    	 	<h:commandButton value="Liste des groupements" action="#{groupementBean.listeGroupement}" immediate="true" />
    Jusque la j'arrive à afficher les données de la base dans le selectOneMenu.
    Mon problème est que quand je valide mon enregistrement les données ne sont pas postées. J'ai fait pas mal de forums, mais je trouve pas solution.

    Quelqu'un pourrait m'aider svp?

    Classe GroupementBean
    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
     
    ackage web;
     
    import java.io.Serializable;
    import java.util.List;
     
    import modele.Groupement;
    import modele.Links;
    import modele.service.GroupementSvc;
     
    import org.richfaces.component.html.HtmlScrollableDataTable;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
     
    @SuppressWarnings("serial")
    @Component("groupementBean")
    @Scope("session")
    public class GroupementBean implements Serializable{
     
    	@Autowired
    	private transient GroupementSvc groupementSvc;
     
    	private transient HtmlScrollableDataTable gpTable;
    	private Groupement currentGp;
    	private List<Groupement> listeGp;
    	public GroupementSvc getGroupementSvc() {
    		return groupementSvc;
    	}
    	public void setGroupementSvc(GroupementSvc groupementSvc) {
    		this.groupementSvc = groupementSvc;
    	}
    	public HtmlScrollableDataTable getGpTable() {
    		return gpTable;
    	}
    	public void setGpTable(HtmlScrollableDataTable gpTable) {
    		this.gpTable = gpTable;
    	}
    	public Groupement getCurrentGp() {
    		return currentGp;
    	}
    	public void setCurrentGp(Groupement currentGp) {
    		this.currentGp = currentGp;
    	}
    	public List<Groupement> getListeGp() {
    		return listeGp;
    	}
    	public void setListeGp(List<Groupement> listeGp) {
    		this.listeGp = listeGp;
    	}
     
    	//Methodes pour les liens des pages et les services metier
    	public String createGroupement(){
    		currentGp = new Groupement();
    		return Links.createGroupement.toString(); 
    	}
    	public String listeGroupement(){
    		init();
    		return Links.listeGroupement.toString();
    	}
    	public void init(){
    		listeGp = groupementSvc.listGroupements();
    	}
     
    	public String saveGp(){
    		groupementSvc.addGroupement(currentGp);
    		return listeGroupement();//createGroupement();
    	}	
    }
    Classe LocaliteBean
    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
     
    package web;
     
    import java.io.Serializable;
    import java.util.List;
     
    import javax.annotation.PostConstruct;
     
    import modele.Links;
    import modele.Localite;
    import modele.service.LocaliteSvc;
     
    import org.richfaces.component.html.HtmlScrollableDataTable;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
     
     
    @SuppressWarnings("serial")
    @Component("localiteBean")
    @Scope("session")
    public class LocaliteBean implements Serializable{
     
     
    	@Autowired
    	private transient LocaliteSvc locSvc;
    	private transient HtmlScrollableDataTable locTable;	
    	private Localite currentLoc;
    	private List<Localite> locListe;
     
     
    	@PostConstruct
    	public void init(){
    		locListe = locSvc.listLocalite(); 
    	}
     
     
    	public LocaliteSvc getLocSvc() {
    		return locSvc;
    	}
     
    	public void setLocSvc(LocaliteSvc locSvc) {
    		this.locSvc = locSvc;
    	}
     
    	public HtmlScrollableDataTable getLocTable() {
    		return locTable;
    	}
     
    	public void setLocTable(HtmlScrollableDataTable locTable) {
    		this.locTable = locTable;
    	}
     
    	public Localite getCurrentLoc() {
    		return currentLoc;
    	}
     
     
    	public void setCurrentLoc(Localite currentLoc) {
    		this.currentLoc = currentLoc;
    	}
     
     
    	public List<Localite> getLocListe() {
    		return locListe;
    	}
     
    	public void setLocListe(List<Localite> locListe) {
    		this.locListe = locListe;
    	}
     
    	/*Link & Pages methods*/
    	public String createLocalite(){
    		currentLoc = new Localite();
    		return Links.createLocalite.toString();
    	}
    	public void dropLocalite(int id){
     
    	}
    	public String saveLoc(){
    		locSvc.saveLocalite(currentLoc);
    		init();
    		return createLocalite();
    	}
    }
    Cordialement

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Salut,

    tu dois utiliser un "Converter" pour obtenir une vraie instance de ce que tu sélectionnes dans un selectOneMenu.

    Je te propose même de ne pas trop te casser la tête et d'utiliser directement le converter "générique" que j'ai proposé (et qui fonctionne très bien) depuis un certain temps :

    http://www.developpez.net/forums/d11...ique-securise/

    A+

  3. #3
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2007
    Messages : 94
    Par défaut
    Merci pour la proposition de solution. Je vais essayer de la mettre en oeuvre voir ce que ça donne

Discussions similaires

  1. Problème de liaison avec une nouvelle DCU
    Par QAYS dans le forum EDI
    Réponses: 1
    Dernier message: 05/05/2008, 11h35
  2. Réponses: 12
    Dernier message: 27/11/2007, 15h03
  3. Problème de liaison avec sous-requêtes
    Par piziwate dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/10/2007, 13h23
  4. Réponses: 1
    Dernier message: 09/10/2007, 06h44
  5. Problème à la liaison avec LMDTools SE et Builder 2006
    Par Bodom-Child dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/02/2007, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo