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

Struts 1 Java Discussion :

pb pour récupérer la valeur d'un html:radio


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut pb pour récupérer la valeur d'un html:radio
    bonjour,
    voici mon pb:

    J'ai un formulaire contenant une liste de clients, chacun affichés sur une ligne a laquelle est associée un radio button permettant de sélectionner le client. Ensuite je passe dans mon Action et veut mettre l'id du client sélectionné en session pour l'afficher dans la jsp suivante.

    Code de la jsp créant le formulaire:
    (sachant que les value des html:radio sont correctes quand je regarde le source html généré)
    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
     
    <logic:iterate id="client_i" name="listeClientsForm" property="listeClients">
    	<tr>
    		<td>
    			<bean:write name="client_i" property="id"/>
     
    		</td>
    		<td>
    			<bean:write name="client_i" property="nom"/>
    		</td>
    		<td>
    			<bean:write name="client_i" property="prenom"/>
    		</td>
    		<td>
    			<bean:write name="client_i" property="secteur"/>
    		</td>
    		<td>
    			<html-el:radio property="choix" value="${client_i.id}"/>
    		</td>
    	</tr>
    </logic:iterate>

    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
     
    public class ListeClientsForm extends ActionForm
    {
    	private static final long serialVersionUID = 1L;
     
    	private ArrayList<ElfClient> listeClients = new ArrayList<ElfClient>();
    	private String[] choix = new String[1]; // id du client sélectionné
     
    	public ArrayList getListeClients() {
    		GestionClient gestionCli=new GestionClient();
    		setListeClients( gestionCli.getClients() );
    		return listeClients;
    	}
     
    	public void setListeClients(ArrayList<ElfClient> client) {
    		this.listeClients = client;
    	}
     
    	public String getChoix(){
    		return choix[0];
    	}
     
    	public void reset(ActionMapping mapping, HttpServletRequest request) {
    		listeClients = new ArrayList<ElfClient>();
    		choix=new String[1];
    	}
    }
    Voici la classe Action ou apparait le pb:
    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
     
    public class ListeClientsAction extends Action{
        public ActionForward execute( 	ActionMapping mapping,
                						ActionForm form,
                						HttpServletRequest request,
                						HttpServletResponse response)
                						throws Exception
        {
     
        		ListeClientsForm listeClientsForm = (ListeClientsForm)form;
     
        		request.getSession().getServletContext().setAttribute( "idUser", Integer.parseInt(listeClientsForm.getChoix()) );
        		//request.getSession().getServletContext().setAttribute( "idUser", 1 );
     
        		return mapping.findForward("success");
        }
     
    }
    En fait, le résultat de listeClientsForm.getChoix() est null mais je ne comprend pas pourquoi. Si quelqu'un a une idée ca serait gentil!

    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Un 'radio' ne peut renvoyer qu'une seule valeur, donc, plutôt que String[], utilise simplement String pour choix...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Merci pour ta réponse,

    par contre j'ai toujours le meme problème en remplacant String[]choix par String choix.

    Voici le code de la jsp ou j'affiche mon client passé en session:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <%
    String valueSession=(String)(request.getSession().getServletContext().getAttribute("idUser"));
    out.print(valueSession);
    out.print("<hr>");
    GestionClient gestionCli = new GestionClient();
    ElfClient client_i = (ElfClient)gestionCli.getClientById(1);
     
    out.print( client_i.getId()+"<br>"+client_i.getPrenom()+"<br> "+client_i.getNom()+"<br> "+client_i.getSecteur() );
    out.print("<hr>");
    %>
    cela renvoie bien une valeur null puisque quand j'affiche valueSession il ne m'affiche rien. Si j'essaye de le caster en Integer il me balance une exception ci dessous:

    Castage en Integer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Integer valueSession=Integer.parseInt((String)(request.getSession().getServletContext().getAttribute("idUser")));
    Exception générée:
    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
     
    java.lang.NumberFormatException: For input string: ""
    	java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    	java.lang.Integer.parseInt(Integer.java:468)
    	java.lang.Integer.parseInt(Integer.java:497)
    	org.apache.jsp.gestionSecteurs.AfficherClient_jsp._jspService(AfficherClient_jsp.java:107)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    Merci pour votre aide

  4. #4
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Pourquoi utiliser <html-el:radio> et pas <html:radio>?

    Tu as bien tout mis en string? Remet voir ton code de la form et de ton jsp pour voir ce qu'il y a de changé.

    Met le bout de la définition de ton action et form que tu as dans struts-config aussi, ca sera mieux pour tester pour voir ton pb.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pour ton problème de choix, j'ai remarqué que tu n'avais pas de setter dans l'actionForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void setChoix(String choix)
    {
       this.choix = choix;
    }
    Sinon, pour le problème NumberFormatException, il faudrait passer par une variable intermédiaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Integer valueSession = null;
    String temp = request.getSession().getServletContext().getAttribute("idUser");
    if ( temp != null && temp.trim().length() > 0 )
    {
       valueSession = new Integer(temp);
    }
    ...
    On suppose que si il y a quelque chose dans la zone, ce sont des chiffres...

    A part ça, contrairement à ce que tu dis, tu n'utilises pas le context session mais application
    - request.getSession().getServletContext() = application, tout le monde 'pointe' sur la mème variable
    - request.getSession() = session, lié au couple browser/application de l'utilisateur qui fait la demande
    (ceci dit, c'est peut-être voulu...)

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Alors, voici le nouveau Form:
    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
     
    public class ListeClientsForm extends ActionForm
    {
    	private static final long serialVersionUID = 1L;
     
    	private ArrayList<ElfClient> listeClients = new ArrayList<ElfClient>();
    	private String choix;
     
    	public ArrayList getListeClients() {
    		GestionClient gestionCli=new GestionClient();
    		setListeClients( gestionCli.getClients() );
    		return listeClients;
    	}
     
    	public void setListeClients(ArrayList<ElfClient> client) {
    		this.listeClients = client;
    	}
     
    	public String getChoix(){
    		return choix;
    	}
     
    	public void reset(ActionMapping mapping, HttpServletRequest request) {
    		listeClients = new ArrayList<ElfClient>();
    		choix=new String();
    	}
    }
    Pour ce qui est de la jsp qui affiche les clients, rien n'a changé par rapport à mon premier post. Quand au code de la jsp qui affiche le client choisi, je l'ai mis juste dans mon post précédent.
    Par contre, voici mon struts-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
     
    <form-beans>
    	 <!-- listeClients -->
    	<form-bean name="listeClientsForm" type="org.elf.form.action.ListeClientsForm">
    		<form-property name="listeClients" type="java.util.ArrayList" />
    	</form-bean>
    </form-beans>
    <action-mappings>
    	 <!-- listeClients -->
    	 <action path="/listeClients-action" type="org.elf.form.action.ListeClientsAction" name="listeClientsForm" scope="request" validate="false">
    	 	 <forward name="success" path="/AfficherClient.jsp" />
    	 </action>
    </action-mappings>
    Voili voilou je pense qu'il y a tout maintenant..

  7. #7
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Je te propose de rajouter un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    setChoix(String choix){
    this.choix = choix;
    }
    dans ton form. Car sans cela la valeur ne peut jamais etre setter!

  8. #8
    Membre averti
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Aaah c'est bon !!

    Alors en fait, j'ai effectivement oublié le setter que j'ai rajouté.
    De plus j'ai rajouté la ligne <form-property name="choix" type="java.lang.String" /> dans le struts-config.xml (je me suis apercu de cet oubli en te le postant )
    Enfin j'ai rajouté ton test pour pouvoir gérer les codes d'erreur, c'est donc plus propre.

    Merci beaucoup pour votre aide!

  9. #9
    Membre averti
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    lol on arrete pas de se croiser, ca fait deux fois que je poste en meme temps que toi maxf1 donc je vois pas tes réponses à chaque fois :p

    Sinon pour te répondre a ton post concernant <html-el:radio> au lieu de <html:radio> c'est tout simplement parce que j'utilise j2ee1.3 et non j2ee1.4 donc il y a un problème d'interprétation des balises pour <html:radio>.
    J'ai donc du rajouté struts-el.jar pour résoudre le problème (un autre post que j'avais mis il y a peu si ca t'intéresse )

    En tout cas merci pour votre aide a tous les deux!

  10. #10
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    OK merci pour ta reponse. C'est pas grave.

    Si c'est ca t'en mieux. Mais c'est bizarre qu'il ne rale pas quand il manque des setter car moi java 1.5, avec tomcat 5.5, y rale s'il manque un getter ou setter!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/12/2005, 12h24
  2. code java pour récupérer la valeur d'un neoud XML
    Par MASSAKA dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 14/10/2005, 15h17
  3. Réponses: 5
    Dernier message: 09/09/2005, 17h51
  4. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49
  5. API pour récupérer la valeur d'un champ Edit
    Par buteiduil dans le forum Windows
    Réponses: 4
    Dernier message: 15/05/2005, 22h32

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