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 2 Java Discussion :

[JPA] Formulaire dynamique


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut [JPA] Formulaire dynamique
    Bonjour, j’aimerais créer un formulaire contenant une liste de textfield dont la taille dépend du nombre d’éléments que j’ai en base.
    J'ai essayé comme ceci mais ça ne fonctionne pas.

    Concrètement j'ai mon bean qui correspond à une table de ma base de données.
    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
     
    @Entity
    public class Tarif implements Serializable {
    	@Id
    	@GeneratedValue
    	@Column(name="ID_TARIF")
    	private int idTarif;
     
            @Column(name="PRIX")
    	private float prix;
     
            public int getIdTarif() {
    		return this.idTarif;
    	}
     
    	public void setIdTarif(int idTarif) {
    		this.idTarif = idTarif;
    	}
     
            public float getPrix() {
    		return this.prix;
    	}
     
    	public void setPrix(float prix) {
    		this.prix = prix;
    	}
    }
    J'ai ma classe action qui va contenir ma liste de Tarif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class ActiviteAction extends ActionSupport{
            private List<Tarif> listTarif;
     
            public void setListTarif(List<Tarif> listTarif) {
    		this.listTarif = listTarif;
    	}
     
    	public List<Tarif> getListTarif() {
    		return listTarif;
    	}
    }
    Et j'ai ma jsp qui affiche mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    <s:form>
            <s:iterator value="listTarif" status="status">	
                     <s:textfield name="listTarif[#status.index].prix" ></s:textfield>
    	</s:iterator>
            <s:submit value="Valider"></s:submit>
    </s:form>
    J'ai bien mon formulaire qui s'affiche avec le bon nombre de textfield.
    Les get() se font bien, c'est à dire que mes champs prix sont bien renseignés dans les textfield correspondants mais lorsque je les modifie et que je valide mon formulaire les set() ne sont pas appelés.
    Ni les setPrix() , ni le setListTarif() ce qui fait que dans mon action je récupère ma listTarif à null.

    Pouvez vous me dire où je fais erreur ou si il y a une meilleure solution pour résoudre mon problème. Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Slt,

    Peux-tu nous montrer l'intégralité de ta class ActiviteAction ?

    ++


    ---

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    Voici la classe en entier.

    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
     
    public class ActiviteAction extends ActionSupport{
            private TarifDao tarifDao;
            private List<Tarif> listTarif;
     
            public String execute() {
                    listTarif = tarifDao.findAll();
                    return Action.INPUT;
            }
     
            public String modifieTarif() {
                    for(int i=0; i<listTarif.size(); i++)
                              tarifDao.updateTarif(listTarif.get(i));
                    return Action.SUCCESS;
            }
     
            public TarifDao getTarifDao() {
    		return tarifDao;
    	}
     
    	public void setTarifDao(TarifDao tarifDao) {
    		this.tarifDao = tarifDao;
    	}
     
            public void setListTarif(List<Tarif> listTarif) {
    		this.listTarif = listTarif;
    	}
     
    	public List<Tarif> getListTarif() {
    		return listTarif;
    	}
    }

    Les fonctions de mon dao sont juste des appels de requêtes.

    C'est dans la fonction modifietarif() que je récupère ma listeTarif a null.
    C'est celle qui est appelé par le submit de mon formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:submit value="submit" method="modifieTarif"></s:submit>

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Slt,

    peux tu aussi poster ta jsp et ton struts.xml stp

    ++


    ---

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    Les voilà, si je les avait pas mis avant c'est que je pensais qu'il n'était pas utile pour comprendre mon problème.

    tarif.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
     
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags"%>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
            <head>
            </head>
            <body>
    		   <s:form>
                               <s:iterator value="listTarif" status="status">	
    			           <s:textfield name="listTarif[#status.index].prix" ></s:textfield>
                               </s:iterator>
                               <s:submit value="Submit" method="modifieTarif"></s:submit>
                      </s:form>
             </body>
    </html>
    struts.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
    21
     
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
     
    <struts>
    	<constant name="struts.objectFactory" value="spring" />
           <constant name="struts.devMode" value="true" />
    	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
     
    	<package name="struts2" extends="struts-default">
                     <action name="adminAct" method="execute" class="action.administration.ActiviteAction">
                              <result name="input">WEB-INF/pages/administration/tarif.jsp</result>
                     </action>
     
                     <action name="modifTarif" method="modifieTarif" class="action.administration.ActiviteAction">
                              <result name="input">WEB-INF/pages/administration/tarif.jsp</result>
                              <result name="success">WEB-INF/pages/administration/tarifRes.jsp</result>
                     </action>
           </package>
    </struts>
    En tout cas merci d'essayer de m'aider

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Slt,

    Il me semble qu'il n'y a pas d'action dans ton formulaire.
    Essaie ça :
    1) remplace <s:form> par <s:form action="modifTarif">

    2) Dans <s:submit value="Submit" method="modifieTarif"> tu peux supprimmer => method="modifieTarif" <= tu l'as déjà précisé dans ton fichier struts.xml

    3) Juste une remarque sur l'utilisation des balises vides:
    tu peux remplacer :
    <s:textfield name="listTarif[#status.index].prix" ></s:textfield>
    par <s:textfield name="listTarif[#status.index].prix" />

    et <s:submit value="Valider"></s:submit>
    par <s:submit value="Valider" />

    Normalement ça doit mieux marcher.

    ++


    ---

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    J'ai essayé ce que tu m'as dit mais ma liste listTarif est toujours à null dans ma fonction modifieTarif().

    Je ne pense pas que le problème vienne de là car j'ai rajouté un champ dans mon formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:textfield name="test"></textfield>
    Que j'ai déclarer dans mon action ActiviteAction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private String test;
     
    public void setTest(String test) {
            this.test=test;
    }
     
    public String getTest() {
             return test;
    }
    Dans ma fonction modifieTarif je récupère bien la valeur de mon champ test donc ça ne vient pas d'un mauvais passage de paramètres de ma jsp à mon action. Pour moi le problème vient de ces lignes là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <s:iterator value="listTarif" status="status">	
            <s:textfield name="listTarif[#status.index].prix" ></s:textfield>
    </s:iterator>
    Sinon pour les balises vides je connais, c'est juste que j'utilise l'autocompletion d'eclipse et qu'il me crée automatiquement les balises fermantes

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    Vu que je n'arrive pas à résoudre mon problème, je vais essayer de faire différemment.

    Quelqu'un sait-il comment afficher une liste de textfield dans une jsp et la récupérer dans une classe action en sachant que la taille de cette liste est variable.

    Merci.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    J'ai finalement réussi à le faire comme j'étais parti au début.
    En fait c'était juste un problème de syntaxe. Il faut rajouter {%} autour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <s:iterator value="listTarif" status="status">
    	<s:textfield name="listTarif[%{#status.index}].prix" ></s:textfield>
    </s:iterator>
    Je passe en résolu.

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut


    Effectivement, je n'avais pas vu non plus la coquille.

    ++


    ---

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

Discussions similaires

  1. Validation formulaire dynamique
    Par odelayen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/08/2005, 17h47
  2. [JSF] Implémentation d'un formulaire dynamique
    Par Fleep dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2005, 19h00
  3. pb access formulaire dynamique
    Par jibouze dans le forum IHM
    Réponses: 3
    Dernier message: 12/01/2005, 09h39
  4. formulaire dynamique
    Par shirya dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/10/2004, 16h13
  5. [struts]Formulaire dynamique
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 28/05/2004, 16h35

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