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 :

Exception creating bean - le retour


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Exception creating bean - le retour
    Bonjour à tous,

    Je sais qu'un post identique (ou presque) a été résolu mais pour ma part je ne comprend pas mon problème. "presque identique" car j'arrive à récupérer les données statiques d'un formulaire mais quand je veux utiliser les données en dynamique(DynaActionForm) ca ne marche plus.
    Mes deux classes, LoginForm(statique) et LoginDynaActionForm(dynamique) sont dans le meme package "modele".

    Donc l'erreur :
    Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception creating bean of class modele.LoginDynaActionForm: {1}
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Or, j'ai bien dans mon DynaActionForm:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package modele;
    
    import org.apache.struts.action.*;
    import javax.servlet.http.HttpServletRequest;
    
    public class LoginDynaActionForm extends DynaActionForm {
    patati patata...
    et dans mon struts-config j'ai :

    Code xml : 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
    <struts-config>
        <!--
      <form-beans type="org.apache.struts.action.ActionFormBean">
        <form-bean name="loginForm" type="modele.LoginForm" />
      </form-beans>
    -->
      <form-beans>
        <form-bean name="loginForm" type="modele.LoginDynaActionForm" >
          <form-property name="nomUtilisateur" type="java.lang.String" initial=""/>
          <form-property name="mdpUtilisateur" type="java.lang.String" initial=""/>
        </form-bean>
      </form-beans>  
      <action-mappings type="org.apache.struts.action.ActionMapping">
      <!-- Action permet d'associer une URL ( /login.do dans l'exemple) avec un objet de type Action (LoginAction dans l'exemple). -->
        <action path="/login" parameter="" validate="true" input="/erreur.jsp" scope="request"
    	  name="loginForm" type="control.LoginDynaAction">
          <forward name="succes" path="/accueil.jsp" redirect="false" />
          <forward name="echec" path="/index.jsp" redirect="false" />
        </action>
      </action-mappings>
     
      <message-resources parameter="messages" null="true" key="messages"/>
     
    </struts-config>
    Voilà si quelqu'un aurait une idée pour résoudre mon problème, ce serait sympa de sa part, car là, je tombe de fatigue.
    Merci.

    Au cas où je laisse mon explorateur :

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Normalement, lorqu'on utilise une ActionForm dynamique, les champs du formulaire étant décrits directement dans le struts-config.xml, on n'a pas à écrire une classe Java.

    Et dans ce cas, on la définit comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      <form-beans>
        <form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">
          <form-property name="nomUtilisateur" type="java.lang.String" initial=""/>
          <form-property name="mdpUtilisateur" type="java.lang.String" initial=""/>
        </form-bean>
      </form-beans>
    Donc, pourquoi as-tu une classe LoginDynaActionForm ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bé en fait je débute sur struts et j'étais en train de suivre un exemple:
    ftp://ftp-developpez.com/mbaron/javaee/struts.pdf

    Et à la page 344 une classe DynaActionForm est bien implémentée.

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Ok. Tu as donc une méthode validate dans LoginDynaActionForm mais peux-tu me confirmer que tu as bien enlevé les getters et setters sur les propriétés ?

    Sinon, peux-tu donner le code complet de LoginDynaActionForm ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bien sûr le voici :

    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
    package modele;
     
    import org.apache.struts.action.*;
    import org.apache.struts.action.DynaActionForm;
    import javax.servlet.http.HttpServletRequest;
     
    public class LoginDynaActionForm extends DynaActionForm {
     
    	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
     
    		ActionErrors errors = new ActionErrors();
    		String nomUtilisateur = (String)this.get("nomUtilisateur");
    		String mdpUtilisateur = (String)this.get("mdpUtilisateur");
     
    		if ((nomUtilisateur == null) || (nomUtilisateur.length() == 0))
    	        errors.add("nomUtilisateur",(ActionMessage) new ActionError("erreur.nomutilisateur.obligatoire"));
     
    	      if ((mdpUtilisateur == null) || (mdpUtilisateur.length() == 0))
    	        errors.add("mdpUtilisateur", (ActionMessage)new ActionError("erreur.mdputilisateur.obligatoire"));
    	    return errors;
    	  }
     
    	public void reset(ActionMapping mapping, HttpServletRequest request) {
    	    this.mdpUtilisateur = null;
    	    this.nomUtilisateur = null;
    	}
    }

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Suivant la version de Struts que tu utilises, c'est soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    errors.add("nomUtilisateur",new ActionError("erreur.nomutilisateur.obligatoire"));
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    errors.add("nomUtilisateur",new ActionMessage("erreur.nomutilisateur.obligatoire"));

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je sais bien, cependant, que je mette l'un ou l'autre ca ne change rien.

    Par contre je sais que j'ai une erreur dans loginDynaAction car il me met une erreur sur le path="/login" (erreur 505 je crois)

    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
    public final class LoginDynaAction extends Action {
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest req, HttpServletResponse res) throws Exception 
    	{		
    			LoginDynaActionForm dynaForm = (LoginDynaActionForm)form;
    			//req.setAttribute("nomUtilisateur", dynaForm.get("nomUtilisateur"));
    			//req.setAttribute("mdpUtilisateur", dynaForm.get("mdpUtilisateur"));
    			String resultat = null;
    		    String nomUtilisateur = (String)dynaForm.get("nomUtilisateur");
    		    String mdpUtilisateur = (String)dynaForm.get("mdpUtilisateur");
     
    		    if (nomUtilisateur.equals("a") && mdpUtilisateur.equals("a")) {
    		        resultat = "succes";
    		    } 
    		    else {
    		        resultat = "echec";
    		    }
    		    return mapping.findForward(resultat);
    	}
    }

    Peut-être y-a t'il un lien? je continue a chercher (...et pas encore couché -_-)

  8. #8
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu montrer le mapping de l'Action LoginDynaAction défini dans le struts-config.xml ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je n'y arrive toujours et commence a perdre patience. De toute façon meme si j'ai une erreur dans la classe loginDynaAction, je devrais quand meme voir le formulaire. Or j'ai toujours cette erreur

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception creating bean of class modele.LoginDynaActionForm: {1}
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Je me suis penché sur le scope, sur le method="post", sur les espace en trop a la fin des tags, et toujours rien. Je sens que je vais abondonner la classe et compter sur l'instance auto du controleur de struts si ca continue mais ca m'embete beaucoup...

  10. #10
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu faire un test après avoir enlevé la méthode reset de LoginDynaActionForm ?

    Peux-tu donner l'intégralité du struts-config.xml ?

    Et enfin, quelle version de Struts utilises-tu ?

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    1. Rien ne change quand j'enleve la fonction reset

    2. Intégralité du code struts-config :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" 
    "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
     
    <struts-config>
        <!--
      <form-beans type="org.apache.struts.action.ActionFormBean">
        <form-bean name="loginForm" type="modele.LoginForm"/>
      </form-beans>-->
     
      <form-beans>
        <form-bean name="loginForm" type="modele.LoginDynaActionForm">
          <form-property name="nomUtilisateur" type="java.lang.String" initial=""/>
          <form-property name="mdpUtilisateur" type="java.lang.String" initial=""/>
        </form-bean>
      </form-beans>  
     
      <action-mappings type="org.apache.struts.action.ActionMapping">
      <!-- Action permet d'associer une URL ( /login.do dans l'exemple) avec un objet de type Action (LoginAction dans l'exemple). -->
        <action path="/login" parameter="" validate="true" input="/erreur.jsp" scope="request"
    	  name="loginForm" type="control.LoginDynaAction">
          <forward name="succes" path="/accueil.jsp" redirect="false"/>
          <forward name="echec" path="/index.jsp" redirect="false"/>
        </action>
      </action-mappings>
     
      <message-resources parameter="messages" null="true" key="messages"/>
     
    </struts-config>
    3. J'utilise les jar du struts version 2.0.11 que voici:


    4. et de plus j'ai beau changer aussi la version en haut du struts-config.xml :struts-config_1_2.dtd en struts-config_2_0.dtd , rien ne change.


    En conclusion j'ai un leger présentiment que la version2 de struts ne peut pas faire ce que je suis en train de faire. Non?

  12. #12
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Citation Envoyé par devgru Voir le message
    En conclusion j'ai un leger présentiment que la version2 de struts ne peut pas faire ce que je suis en train de faire. Non?
    Je ne sais pas, je n'ai jamais utilisé Struts 2 mais je sais qu'il y a beaucoup d'évolutions entre Struts 1 et Struts 2.

    Donc, soit tu dois vraiment utiliser Struts 2 et donc là, je pense qu'il faudrait déjà déplacer la discussion dans le forum Struts 2.

    Soit tu veux te former à Struts et la version n'a pas d'importance et donc je te conseille de télécharger une 1.2 ou une 1.3.

    Sinon, puisque tu suis un tutoriel, je te conseille de passer directement à l'utilisation du Validator pour valider les champs de ton formulaire dynamique.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    D'apres le tuto ftp://ftp-developpez.com/mbaron/javaee/struts.pdf,
    la version de struts utilisée est la 1.2.
    Je pense que je vais installer cette version pour voir.
    Sinon il existe un autre tuto qui explique les formulaires dynamiques sans creer de classe DynaActionForm. ici.

    Je reviendrai sur ce post plus tard pour sa résolution si je trouve plus d'informations.

    En tout cas merci encore c_nvy .
    Et bonne journée à tous.

  14. #14
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Tu peux effectivement faire la validation dans l'Action mais je trouve que le Validator, c'est quand même bien pratique pour les validations simples, d'autant plus que tu peux faire une validation côté client et côté serveur.

    Mais bon, à toi de voir.

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    C'est vrai. En fait je pensais qu'il fallait toujours créer la classe DynaActionForm meme avec le validator. Aparement ce plugin traite les contraintes d'intégrité du formulaire a lui tout seul. Donc je vais continuer là dessus alors.
    Merci.

  16. #16
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Si tu veux utiliser le Validator avec une ActionForm dynamique, tu n'as effectivement pas besoin de créer une classe.
    Il faut juste déclarer le form-bean de type DynaValidatorForm dans le struts-config.xml comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm">
        <form-property name="nomUtilisateur" type="java.lang.String" initial=""/>
        <form-property name="mdpUtilisateur" type="java.lang.String" initial=""/>
    </form-bean>

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/03/2010, 17h29
  2. [Tiles] Exception creating bean
    Par karement dans le forum Struts 1
    Réponses: 7
    Dernier message: 20/07/2008, 12h07
  3. Exception creating bean of class
    Par rashid120 dans le forum Struts 1
    Réponses: 3
    Dernier message: 15/02/2008, 15h42
  4. ActionForm : Exception creating bean...
    Par am.adnane dans le forum Struts 1
    Réponses: 6
    Dernier message: 12/06/2007, 14h29
  5. [struts]Exception creating bean
    Par rafounette dans le forum Struts 1
    Réponses: 16
    Dernier message: 10/03/2006, 19h54

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