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 :

récuperation des valeurs a partir d'un lien


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Par défaut récuperation des valeurs a partir d'un lien
    bonjour tout le monde je voudrais afficher le détail d'un client a partir d'une liste des clients auxquels je passe l'id_client a travers le lien edit,mais les champs sont vides.

    voila le code:

    listerclient.jsp:
    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
    <body>
    	<f:view>
    	<h:form>
    		<h:dataTable id="clients" 
    					 value="#{clientListBean.affichage}" 
    					 var="clients" 
    					 border="1">   
    		  <h:column>
    		    <f:facet name="header">
    		     <h:outputText  value="Nom"/>
    		    </f:facet>
    		    <h:outputText value="#{clients.nom}" />
    		  </h:column>
    		  <h:column>
    		    <f:facet name="header">
    		      <h:outputText  value="Prenom"/>
    		    </f:facet>
    		    <h:outputText value="#{clients.prenom}" />
    		  </h:column>
    <h:column>
    		    <f:facet name="header">
    		      <h:outputText  value="Edit"/>
    		    </f:facet>
    		    <h:commandLink id="Edit" action="editClient" 
    		    actionListener="#{clientBean.clientDetail}"  >
    		    	<h:outputText value="Edit" />
    		    	<f:param id="editId" 
    		    			 name="id" 
    		    			 value="#{clients.id_client}" />
    		    </h:commandLink>
    		  </h:column>
     
    		</h:dataTable> 
     
    		</h:form>
    	</f:view>
    </body>
    editClient.jsp
    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
    <body>
    	<f:view>
    		<h:form >
    		<table> 
          	<tr> 
            <td><h:outputText value="Nom:" /> </td> 
            <td><h:inputText value="#{clientBean.nom}"/></td> 
          </tr> 
    	<tr>
    			<td><h:outputText value="Prenom:" /></td>
    		    <td>
    			<h:inputText value="#{clientBean.prenom}">
    			</h:inputText></td>
    			</tr>
    </table>
    	</h:form>
    	</f:view>
    </body>
    Client.java:
    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
    package com.connexion;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
     
    import javax.faces.component.UIParameter;
    import javax.faces.event.ActionEvent;
    import javax.servlet.http.HttpServletRequest;
     
    public class Client {
     
    	private Integer id_client;
    	private String nom;
    	private String prenom;
    	String pilote = "com.mysql.jdbc.Driver";
    	HttpServletRequest request;
    	ResultSet resultat;
     
    //	------------------ Constructors  --------------------------------
    	public Client(){}
    	public Client(Integer id, String nom, String prenom){ 
    		this.id_client = id;
    		this.nom = nom;
    		this.prenom = prenom;
     
    	}
     
    	//-----------getter setter --------------------------------
    	public Integer getId_client() {
    		return id_client;
    	}
    	public void setId_client(Integer id_client) {
    		this.id_client = id_client;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
     
    public void clientDetail(ActionEvent event){
    	UIParameter component = (UIParameter) event.getComponent().findComponent("editId");
    	//id que j'ai récuperé a partir du lien edit
    	Integer id = Integer.parseInt(component.getValue().toString());
    	try{
    		Class.forName(pilote);
    		Connection connexion = DriverManager.getConnection("Jdbc:mysql://localhost/base","root","");
    		Statement instruction = connexion.createStatement();
    		resultat = instruction.executeQuery("select * from client where id_client='"+id+"' ");			
    	}
    catch (Exception e){
     
    	System.out.println("erreur : "+e.getMessage());
    }
    }
    }
    faces-config.xml
    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
    <faces-config><navigation-rule>
    		<from-view-id>/listerclient.jsp</from-view-id>
    		<navigation-case>
    			<from-outcome>editClient</from-outcome>
    			<to-view-id>/editClient.jsp</to-view-id>
    		</navigation-case>
    	</navigation-rule>
    <managed-bean>
    		<managed-bean-name>clientBean</managed-bean-name>
    		<managed-bean-class>com.connexion.Client</managed-bean-class>
    		<managed-bean-scope>session</managed-bean-scope> 
    	</managed-bean>
     
    	<managed-bean>
    		<managed-bean-name>clientListBean</managed-bean-name>
    		<managed-bean-class>com.connexion.Connexion</managed-bean-class>
    		<managed-bean-scope>session</managed-bean-scope> 
    	</managed-bean>
     
    </faces-config>
    Merci pour votre aide

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Tu peux faire plus simple (il faut donner l'id myForm au form contenant la datatable clients):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void clientDetail(ActionEvent event) {
        // On récupère la datatable
        HtmlDataTable datatable = (HtmlDataTable) event.getComponent().findComponent("myForm:clients");
        // On récupère l'élément affiché sur la ligne où l'utilisateur a cliqué
        Client c = (Client) datatable.getRowData();
        // Traitement sur le client...
    }
    J'ai supposé que clientListBean.affichage retournait une list de Client...

    Simple, non ?
    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

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Par défaut
    j'ai fait cette méthode mais la j'ai des erreurs :
    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
    exception
     
    javax.servlet.ServletException: java.lang.NullPointerException
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
     
    cause mère
     
    javax.faces.el.EvaluationException: java.lang.NullPointerException
    	com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:130)
    	javax.faces.component.UICommand.broadcast(UICommand.java:305)
    	javax.faces.component.UIData.broadcast(UIData.java:657)
    	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
    	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
    	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    je n'ai pas de probleme dans cette classe la méthode que j'ai fait au prealable récuperait l'id client mais lors de la page jsp je ne vois rien comment faire pour afficher les informations au niveau de la page jsf?

  4. #4
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Par défaut
    je ne sais pas pourquoi cette methode ne marche pas si quelqu'un parmi vous peut m'aider ca m'aiderai beacoup a m'avancer merci pour vous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HtmlDataTable datatable = (HtmlDataTable) event.getComponent().findComponent("myForm:client");
    	Client c = (Client) datatable.getRowData();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:form id="myForm">
    		<h:dataTable id="client" 
    					 value="#{clientListBean.affichage}" 
    					 var="clients" 
    					 border="1">

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Par défaut
    j'ai beau cherché et jusqu'a present je ne trouve pas de solution a mon probleme et aussi je ne sais pas pourquoi lorsque je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Client c=(Client)myDataTable.getRowData() ;
    ca me genere une erreur
    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
    type Rapport d'exception
     
    message
     
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
     
    exception
     
    javax.servlet.ServletException: java.lang.ClassCastException: javax.faces.model.ResultSetDataModel$ResultSetMap
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
     
    cause mère
     
    javax.faces.el.EvaluationException: java.lang.ClassCastException: javax.faces.model.ResultSetDataModel$ResultSetMap
    	com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:130)
    	javax.faces.component.UICommand.broadcast(UICommand.java:305)
    	javax.faces.component.UIData.broadcast(UIData.java:657)
    	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
    	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
    	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
     
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.0.28.

  6. #6
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Si tu fais

    Object obj = datatable.getRowData();

    Que vaut obj ? Est-il null ? De quelle classe est-il ?
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Récuperer des valeurs en instantanées
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 06/06/2006, 11h56
  2. Excel comment récuperer des valeurs
    Par jbidou88 dans le forum Excel
    Réponses: 2
    Dernier message: 11/05/2006, 09h27
  3. Réponses: 1
    Dernier message: 19/03/2006, 20h52
  4. [Tableaux] récuperer des valeurs d un tableau
    Par student007 dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2006, 22h27
  5. [VB.NET]Récuperer des valeurs d'une autre page
    Par Dnx dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/05/2005, 16h19

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