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 :

jsf one to many hibernate


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many hibernate
    bonjour,

    je débute hibernate /jsf.
    J sais pas comment exprimer une relation one to many.
    j'explique: 2 table: module et elementmodule.
    j'ai exprimé la relation de one-to-many dans le fichier de configuration Module.
    mais je sais pas quoi faire après, pr permettre a l'Admin d'accéder au elementmodule(x) en cliquant juste sur le module(x) et ainsi de suite.
    j'ai déjà lister les modules mais vraiment je sais pas quoi faire pour afficher les elementmodules.

    je suis bloquée.
    Merci a ceux qui vont m'aider

  2. #2
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many
    si quelqu'un pourra m'aider ou mm me diriger vers une exemple/tuto, je serai reconnaissante.

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu peux utiliser deux dataTable imbriqués, ou le composant subTable de Richfaces, ou même deux dataTable ou une liste de modules et lorsque tu en sélectionne un, tu recupere la liste des éléments.

    tu as l'embarras du choix, tout depend du design de ta page et des composants que tu va utiliser.

  4. #4
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many
    Merci pour votre réponse

    je sais pas, si vous avez un exemple de ça svp; (j'utilise pas RicheFaces)
    n'oubliez pas que je suis encore débutante

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par janatte Voir le message
    Merci pour votre réponse

    je sais pas, si vous avez un exemple de ça svp; (j'utilise pas RicheFaces)
    n'oubliez pas que je suis encore débutante
    prend la solution qui te convient, si tu as des soucis, poste le code on t'aidera à résoudre les problèmes.
    il y'a eu beaucoup de discussion sur ce sujet, tu peux les retrouver sur le forum.

  6. #6
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many
    voila mes beans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Module {
     
    	private int id_module;
    	private String libelle;
    	Filiere filiere;
    	Set <Elementmodule> unite; //getters/setters
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Elementmodule {
     
    	int id_elementmodule;
    	int numero_element;
    	String elementmodule;  //getters/setters
    j'ai déjà déclarer la méthode d'ajout pour (module et elementmodule).

    voila la classe Liste_module:
    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
     
    public class Liste_module_manager {
     
     
    private List<Module> modules=new ArrayList();
     
    	public Liste_module_manager()
    	{
    		Session session = HibernateUtil.getSessionFactory().openSession();
    		Transaction tx = session.beginTransaction();
     
    		String requete="from Module";
    		modules=session.createQuery(requete).list();
    		Iterator It=modules.iterator();
    		while(It.hasNext())
    		{
    			Module M=(Module)It.next();
    			System.out.println(M.getFiliere().getLibelle());
    		}
    		tx.commit();
    		session.close();
    		HibernateUtil.getSessionFactory().close(); //getters/setters
    	}
    Et la classe Liste_element:
    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
    public class Liste_element {
     
    	private List<Elementmodules> element=new ArrayList();
    	private Module module;
     
     
    	public Liste_element()
    	{
    		FacesContext fc = FacesContext.getCurrentInstance();
    		ModuleCourant bean = (ModuleCourant) fc.getExternalContext().getSessionMap().get("moduleCourant");
    		this.module=bean.getMod_select();
     
    		Session session = HibernateUtil.getSessionFactory().openSession();
    		Transaction tx = session.beginTransaction();
     
    		String requete="from Elementmodules where id_module=?";
    		element=session.createQuery(requete).setInteger(0, this.module.getId()).list();
    		System.out.println(this.module.getLibelle());
    		tx.commit();
    		session.close();
    		HibernateUtil.getSessionFactory().close();//getters/setters
    	}
    j'ai aussi créer la classe ModuleCourant:
    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
    public class ModuleCourant 
    	{
    		Module mod_select;
     
     
    		public void selectmodule(ActionEvent evt)
    		{
    		    // On récupère la datatable.
    		    HtmlDataTable table = getParentDatatable((UIComponent) evt.getSource());
     
    		    // On récupère l'objet affiché à la bonne ligne de la datatable.
    			this.mod_select = (Module) table.getRowData();
    		    System.out.println("Je suis dans Module Courant");
     
    		    // On récupère aussi son index
    		    int index = table.getRowIndex();
     
    		    // Suite du traitement sur l'objet sélectionné.
    		}
     
    		private HtmlDataTable getParentDatatable(UIComponent compo) 
    		{
    		    if (compo == null) {
    		        return null;
    		    }
    		    if (compo instanceof HtmlDataTable) {
    		        return (HtmlDataTable) compo;
    		    }
    		    return getParentDatatable(compo.getParent());
    		}
    lorsque je crée une page pr lister les modules , ça marche bien mais lorsque je clique sur un module il m'affiche le message suivant:
    Exception while calling encodeEnd on : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /forms/ajouter_unite_module.jsp][Class: javax.faces.component.html.HtmlOutputText,Id: _idJsp0]}

    Caused by:
    java.lang.NullPointerException - Cannot get value for expression '#{listelement.module.libelle}'
    Aider moi svp???!!!!!

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Je ne comprend pas ce que tu fais, tu veux recuperer la valeur de la ligne sélectionnée dans la dataTable??
    Pour ce là tu as 3 méthodes présentées dans la Faq

  8. #8
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many
    j veux récupérer dans la mm page le libelle du module sélectionné et aussi les elementmodules de ce module, j'espère que vous m'avez compris.
    Avec le code déjà saisi au dessus, il m'affiche l'erreur qui dit que le libelle du module sélectionné n'est pas dispo.

  9. #9
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Citation Envoyé par janatte Voir le message
    j veux récupérer dans la mm page le libelle du module sélectionné et aussi les elementmodules de ce module, j'espère que vous m'avez compris.
    Avec le code déjà saisi au dessus, il m'affiche l'erreur qui dit que le libelle du module sélectionné n'est pas dispo.
    Ok il va peut être falloir débugger dans ta classe Liste_element. il y'a des petits détails inquiétants.
    Déjà ton Modéle c'est Elementmodule ou Elementmodules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private List<Elementmodules> element=new ArrayList();
    ...
    
    String requete="from Elementmodules where id_module=?";
    Ensuite ici est-ce que tu as bien ton module ou Nulll?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.module=bean.getMod_select();

  10. #10
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut
    Merci pour votre réponse.
    Mon modéle s'appelle elementmodules.
    j'ai pas compris la 2ème question.

    J'attends votre réponse

  11. #11
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Dans la deuxième question je veux savoir si ton objet module est null car ton exception est due soit au bean listelement qui n'existe pas, soit à un objet module qui est null. Peux tu nous montrer la déclaration de tes beans dans ton fichier faces-config ainsi qu'une partie du code de ta jsp?

  12. #12
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut
    D'accord,
    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
     
            <managed-bean>
    		<managed-bean-name>Module</managed-bean-name>
    		<managed-bean-class>com.beans.Module</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
    	<managed-bean>
    		<managed-bean-name>Module</managed-bean-name>
    		<managed-bean-class>com.dao.Module</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
            <managed-bean>
    		<managed-bean-name>manager_module</managed-bean-name>
    		<managed-bean-class>com.manager.manager_module</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
            <managed-bean>
    		<managed-bean-name>listeModule</managed-bean-name>
    		<managed-bean-class>com.process.Liste_module_manager</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
    	<managed-bean>
    		<managed-bean-name>moduleCourant</managed-bean-name>
    		<managed-bean-class>com.process.ModuleCourant</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
            <managed-bean>
    		<description>classe gérant les modules</description>
    		<managed-bean-name>Elementmodule</managed-bean-name>
    		<managed-bean-class>com.beans.Elementmodule</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
            <managed-bean>
    		<managed-bean-name>manager_Elementmodule</managed-bean-name>
    		<managed-bean-class>com.manager.manager_Elementmodule</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
    	<managed-bean>
    		<description>classe gérant les modules</description>
    		<managed-bean-name>Elementmodules</managed-bean-name>
    		<managed-bean-class>com.dao.Elementmodules</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
     
           <managed-bean>
    		<description>classe gérant les modules</description>
    		<managed-bean-name>listelement</managed-bean-name>
    		<managed-bean-class>com.process.Liste_element</managed-bean-class>
    		<managed-bean-scope>none</managed-bean-scope>
    	</managed-bean>
     
    <navigation-rule>
    	    <from-view-id>/forms/gestion_module.jsp</from-view-id>
    	    <navigation-case>
    	    <from-outcome>go2</from-outcome>
    	    <to-view-id>/forms/ajouter_unite_module.jsp</to-view-id>
    	    </navigation-case>
        </navigation-rule>
    et pour le code jsp:
    gestion_module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html:column>
    				<core:facet name="header" >
    					<html:outputText value="Libelle" />
    				</core:facet>
     
    			<html:commandLink actionListener="#{moduleCourant.selectmodule}" action="#{listeModule.redirect2}" >
    				<html:outputText value="#{modul.libelle}" />
    </html:commandLink>
    ajout_unite_module:
    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
     
    <td align="left"><div align="left"><img src="images/cote.jpg"/><font id="font_title">
    				Module: 	
    				<html:outputText value="#{listelement.module.libelle}"></html:outputText>
    				</font></div></td>
    				<td align="right"><img src="images/cote.gif" height="28"><font id="font_lien"><a href="ajout_connaissance.jsp">Ajouter une connaissance</a></font></td>
    				</tr></table>
    		</div>
    <html:form>
    			<html:dataTable value="#{listelement.element}" var="elements" >
     
     
    			<html:column>
    				<core:facet name="header" >
    					<html:outputText value="element" />
    				</core:facet>
    				<html:outputText value="#{elements.elementmodule}" />
    			</html:column>	
     
    	</html:form>

  13. #13
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    ton bean listelement est en scope none donc ne peut être liée à une jsf. tu devrais le changer en request et refaire les tests. Je pense que c'est lui qui te pose problème.

  14. #14
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many
    mm si, j'ai le mm message.

  15. #15
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Citation Envoyé par janatte Voir le message
    mm si, j'ai le mm message.
    Je vois dans ton faces-config pour Module et Elementmodules deux beans en request un du package com.dao et un du package com.beans.
    Dans tes deux beans ModuleCourant et Liste_element tu importes lesquels?

    dans ModuleCourant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class ModuleCourant 
    	{
    		Module mod_select; // quel import?
                   ...
    dans Liste_element
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Liste_element {
    	
    	private List<Elementmodules> element=new ArrayList(); //quel import?
    	private Module module; //quel import?
            ...
    si ton probleme persiste en modifiant le scope du bean listelement, poste la trace complète.

  16. #16
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many
    désolée, j'ai enlevé les imports des beans car je dois travailler avec les dao.
    Mais malheureusement, j'ai le mm msg

  17. #17
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Par défaut jsf one to many
    ???

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/06/2007, 08h30
  2. [Hibernate] Relation one to many
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 2
    Dernier message: 23/08/2006, 11h51
  3. [Hibernate] Mapping one-to-many + cle composite
    Par brainstorm dans le forum Hibernate
    Réponses: 2
    Dernier message: 23/06/2006, 10h51
  4. [hibernate] one-to-many et clé etrangère
    Par K-Kaï dans le forum Hibernate
    Réponses: 27
    Dernier message: 18/05/2006, 10h46
  5. [hibernate] relation one-to-many avec plusieurs clés
    Par seb_fou dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/03/2006, 14h47

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