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 :

[Debutant] besoin d'explication pour construire un ActionForm avec un lien href


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut [Debutant] besoin d'explication pour construire un ActionForm avec un lien href
    Bonjour

    Ma question est, je pense, assez bête, mais j'ai quelque problème avec un lien href qui doit renvoyer des propriété à mon ActionForm.

    J'ai un boucle for qui m'affiche autant de lien que de Customer en affichant l'id, le name et le firstName du customer. Et selon le lien sur lequel je clique, je doit récuperer l'id.

    Voici mon code JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <% int taille = ControllerTableCustomer.createTableCustomer(); 
    for (int i= 0 ; i < taille ; i++) { 
    request.setAttribute("customerBean",ControllerTableCustomer.createCustomerBean(i));%>
    <tr><td>
    	<a href="selectPersonAction.do">
    		<bean:write scope="request" name="customerBean" property="id"/>
    		<bean:write scope="request" name="customerBean" property="name"/>
    		<bean:write scope="request" name="customerBean" property="firstName"/>
    	</a>
    	<html:link href="selectPersonAction.do" paramId="id" paramName="customerBean"	/>
    </td></tr>
    <%} %>
    Le SelectPersonForm est bien construit, mais le champ id n'est pas rempli.

    Voici le SelectPersonForm :

    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 SelectPersonForm extends ActionForm {
     
    	private static final long serialVersionUID = 1L;
     
    	private String id;
     
    	public final String getId() {
    		return id;
    	}
     
    	public final void setId(String newCustBean) {
    		id = newCustBean;
    	}
     
    	public final ActionErrors validate(ActionMapping mapping,
    			HttpServletRequest request) {
     
    		ActionErrors errors = new ActionErrors();
    		return errors;
    	}
     
    }
    mon SelectPersonAction :

    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 SelectPersonAction extends Action {
     
    	/**
             * 
             */
    	public final ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
    		SelectPersonForm selectPersonForm = (SelectPersonForm) form;
     
    		System.out.println("SelectPersonAction, SelectPersonForm toString: " + selectPersonForm);
    		System.out.println("SelectPersonAction, CustomerBean string: " + selectPersonForm.getId());
     
    		return mapping.findForward("");
    	}
     
    }
    et mon résultat de println :
    SelectPersonAction, SelectPersonForm toString: com.altis.welcome.controller.SelectPersonForm@1e91259
    SelectPersonAction, CustomerBean string: null
    Pour moi le probleme vient de la page JSP où je n'arrive pas à envoyer les information à mon ActionForm, mais j'arrive pas à savoir comment faire.
    J'ai bien vue la faq, mais rien ne repond à ma question (ou j'ai rien capté...)

    Merci de votre aide
    Blaise

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    Bonjour,

    Les paramètres que tu passes de ta jsp vers l'action ne passent pas par un formulaire ... donc c'est normal que tu obtienne Null ..
    Dans ta jsp tu as fait : request.setAttribute("customerBean", ...
    pour pouvoir récupérer ce param dans ton action tu dois faire :

    param = request.getAttribute("customerBean")

    Biensur il faudra faire attention au cast en fonction du type ...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut
    Mais pourquoi quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:write scope="request" name="customerBean" property="id"/>
    L'id, le name et le firstName sont récupere sans souci ;
    je n'ai pas besoin de faire un param = request.getAttribute("customerBean") avant ?
    Donc pourquoi devrai-je le faire avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link href="selectPersonAction.do" paramId="id" paramName="customerBean"/>
    ??


  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    Non c'est pas dans la jsp que tu dois le faire mais dans ton action ...

    Vulgairement, ton request est comme un assenceur, tu met un truc dedant au RDC et tu le récupère au 1er étage ...
    Ici ta JSP est le RDC et ton action est le 1er étage !!

    Donc quand tu fait, dans la JSP :

    request.setAttribute("customerBean",ControllerTableCustomer.createCustomerBean(i));

    Tu pose dans ton ascenceur un objet "customerBean". Ensuite tu dois le récupérer au 1er étage (l'action) avec :

    param = request.getAttribute("customerBean");

    C'est compris ?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut
    ben, châ marche pô...

    donc je fais, dans mon Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class SelectPersonAction extends Action {
     
    	public final ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
    		CustomerBean cust = (CustomerBean) request.getAttribute("customerBean");
    		System.out.println("(CustomerBean)request.getAttribute(\"customerBean\")) = " + cust);
    		return mapping.findForward("");
    	}
    }
    mais là, j'ai un null.

    j'ai essayé en faisant
    CustomerBean cust = (CustomerBean) request.getSession().getAttribute("customerBean");
    mais ça marche pas mieux.

    Le probleme, c'est que j'en met un paquet de CustomerBean dans ma request via la boucle for, donc quand je fais un resquest.getAttribut, ou mieux, il devrait me renvoyer le dernier request.setAttribut(customerBean), non ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    Je sais pas exactement ce que ton code est censé faire ... mais déjà vérifie dans ta jsp que lorque tu fait : ControllerTableCustomer.createCustomerBean(i) ça te crée bien un bean ...

    Ensuite, pour les objet que tu met dans ton request, tu peux les nommer différament :tu rajoute la valeur de ton compteur i au nom "customerBean" ("customerBean"+valeurDuCompteur) et tu envoi aussi via le request la valeur du compteur pour chaque lien ...

    Comme ça tu récupère la valeur du compteur ensuite ton objet avec le nom "customerBean"+valeurDuCompteur

    Autrement, que veux-tu faire exactement ??? parceque la tu crée des bean dans la jsp qui est censée servir juste à l'affichage .. !!!!

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

Discussions similaires

  1. Besoin d'explications pour Hough
    Par zolotaya dans le forum Traitement du signal
    Réponses: 14
    Dernier message: 25/04/2013, 20h17
  2. [Debutant] Besoin d'aide pour les array
    Par Sayrus dans le forum C#
    Réponses: 3
    Dernier message: 06/09/2008, 23h03
  3. Besoin d'explication pour WHERE EXISTS(SELECT NULL..
    Par Mr Pink Eyes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/06/2007, 11h22
  4. Besoin d'explication pour l'impression
    Par mygwel dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 25/05/2006, 10h49
  5. [Debutant] Besoin d'aide pour modifier un tableau...
    Par CyberTwister dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/03/2006, 14h14

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