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 :

Déclaration des erreurs dans l'ActionForm


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 22
    Par défaut Déclaration des erreurs dans l'ActionForm
    Bonjour,

    J'ai un petit soucis concernant mes messages d'erreurs.
    J'ai créé une page .jsp contenant un formulaire. Ce formulaire contenant des listes déroulantes, j'ai créé une classe Action "PrepareProfilEditAction" qui "prépare" en amont la page afin de remplir les données des listes déroulantes depuis la base de données.
    La classe d'action gérant les données du formulaire étant une classe "ProfilEditAction".
    Lorsque je déclare un message d'erreur dans cette classe, aucun problème, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "errors.add("profil.naissance", new ActionMessage("error.profil.naissance"));"
    Mais pour effectuer d'autres test sur les champs (adresse email par exemple), je souhaite que çe genre de chose se passe dans l'ActionForm, ce qui me parait plus "logique".
    Le truc, c'est qu'en ajoutant une erreur dans l'ActionForm (au superbe nom de ProfilEditForm), mon appli se plante lamentablement et me mettant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.IllegalArgumentException: The path of an ForwardConfig cannot be null
    Je suppose qu'il n'arrive pas à trouver où aller, mais je ne comprends pas trop comment résoudre le problème...

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    bonjour,

    pourrais tu donner un peu plus de code histoire de comprendre mieux où est l'erreur.
    les messages d'erreurs sont défini dans la méthode validate de ton Form?

  3. #3
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 22
    Par défaut
    Alors,

    Pour mon ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class ProfilEditForm extends ActionForm {
    	public String ville; //(+ getter/setter)
     
    	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    		ActionErrors errors = new ActionErrors();        
     
    		//ville
    		if (this.ville == null || this.ville == "") {
    			errors.add("profil.ville.required", new ActionMessage("error.profil.ville.required"));
    		}
     
    		return errors;
    	}
    }
    Le message d'erreur étant défini dans MessageResources_fr_FR.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error.profil.ville.required=Champs ville obligatoire
    Et ma jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <!-- Champs ville -->
        <bean:message key="profil.ville"/> : <html:text size="50" name="<%=Constants.PERSONNE_KEY%>" property="ville"/>    
       	  <!-- ville requis  -->
          <logic:messagesPresent message="false" property="profil.ville.required">
          	     <html:errors property="profil.ville.required"/>
          </logic:messagesPresent>
        <br>
    Voilà, je pense que c'est suffisant (bon, je te rassure, j'ai pas que un champs ville, j'ai simplifié )

    Et quand je valide le formulaire, je fais appel à ProfilEditAction qui en cas de succès fait appel à PrepareProfilEditAction pour réafficher la page .jsp
    Le morceau de struts-config au besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    			<form-bean name="profilEditForm" type="pen.struts.form.ProfilEditForm"/>
    			<action path="/profilEdit" type="pen.struts.action.ProfilEditAction" name="profilEditForm">
    			<forward name="success" path="/prepareProfilEdit.do"/>
    		 </action>
    		 <action path="/prepareProfilEdit" type="pen.struts.action.PrepareProfilEditAction" name="profilEditForm">
    			<forward name="success" path="/pages/profil_edit.jsp"/>
    		 </action>

  4. #4
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 22
    Par défaut
    Oui, alors en fait, c'est tout simplement que je n'avais pas mis de paramètre input dans la balise action de mon fichier struts-config, et du coup, le prog était un peu paumé

    Enfin ça ne résoud mon problème qu'à moitié.
    Car si je mets ma page.jsp dans le paramètre input, toutes mes listes déroulantes seront vides. J'ai besoin de faire appel à ma classe Action de préparation de la page. Est-il possible de faire appel à une classe de type Action dans un input ou est-on limité aux .jsp ? Ca a l'air limité d'après mes tests rapides, donc si quelqu'un voit comment faire...

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 65
    Par défaut
    Citation Envoyé par VolaiL Voir le message
    Oui, alors en fait, c'est tout simplement que je n'avais pas mis de paramètre input dans la balise action de mon fichier struts-config, et du coup, le prog était un peu paumé

    Enfin ça ne résoud mon problème qu'à moitié.
    Car si je mets ma page.jsp dans le paramètre input, toutes mes listes déroulantes seront vides. J'ai besoin de faire appel à ma classe Action de préparation de la page. Est-il possible de faire appel à une classe de type Action dans un input ou est-on limité aux .jsp ? Ca a l'air limité d'après mes tests rapides, donc si quelqu'un voit comment faire...
    Bonjour,

    effectivement ton erreur est du au manque de paramètre input, et puis oui, tu peux appeler l'action qui affiche le formulaire de cette maniere:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <action path="/afficheFormulaireExemple"    type="exemple.action.afficheFormulaireExempleAction"
    <forward name="affiche" path="pageDeFormulaire"/>
    </action>  
    
    <action path="/valideFormulaire"
    type="exemple.action.ValideFormulaireAction"
    scope="request" 
    name="valideFormulaireForm"
    input="/afficheFormulaireExemple.do" >
    <forward name="affiche" path="pageOK.jsp"/>
    </action>
    merci pour votre moitié de solution qui m'a aidé

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

Discussions similaires

  1. Des erreurs dans la déclaration d'une enum
    Par moooona dans le forum Langage
    Réponses: 4
    Dernier message: 28/05/2008, 04h33
  2. [ Struts ] récupération des roles dans l'ActionForm
    Par rikunter dans le forum Struts 1
    Réponses: 3
    Dernier message: 21/04/2006, 10h07
  3. [3.0.2]Détection des erreurs dans le Package Explorer
    Par willowII dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 18/08/2005, 18h46
  4. catch des erreurs dans SQL+
    Par lalystar dans le forum Oracle
    Réponses: 2
    Dernier message: 21/09/2004, 15h17
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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