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 :

Problème struts validate ou hibernate ?


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut Problème struts validate ou hibernate ?
    Bonjour à tous,
    je crée une application qui dans la première page contient un formulaire d'identification. Pour gérer ce formulaire j'ai utilisé un ActionForm.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <action path="/index" 
                type="fac.actions.ConnexionAction"
                name="ConnexionActionForm" scope="session" validate="true" input="/error.jsp">
        	<forward name="success" path="/connected.jsp"/>
        </action>

    Dans mon action (ConnexionAction), faut il appeler la méthode validate de l'actionForm (ConnexionActionForm) ou est elle appelée automatiquement ?
    J'avais compris qu'elle était appelé automatiquement mais j'ai un gros doute puisque dans l'actionForm j'ai mis un affichage mais rien ne s'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    		System.out.println("hello");
    Au contraire lorsque je l'appel explicitement dans mon action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class ConnexionAction extends Action {
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
    			ConnexionActionForm actionForm = new ConnexionActionForm();
    			actionForm.validate(mapping, request);
    			return (mapping.findForward("success"));
     
    	}
    j'ai une erreur java : java.lang.NoClassDefFoundError: net/sf/hibernate/HibernateException

    (Je précise que dans la méthode validate de mon actionForm, j'utilise hibernate)

    Auriez vous une idée du problème?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    La méthode validate est appelée automatiquement AVANT l'appel à execute de l'action. Si ce n'est pas le cas peut etre que ton actionForm est mal défini dans ta jsp ou ton struts-config. Genre pb typo, nom de la classe au lieu de l'instance... Donc pb struts ça s'est sur, je crois bien voir une confusion dans ton struts config : pour exemple une de mes actions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <action path="/rechercheUtilisateur" type="lan.xxx.xxx.actions.RechercheUtilisateurAction" name="formRechercheUtilisateur" ...>
    Ton nom de formulaire commençant par une majuscule est soit une erreur de nommage, soit une confusion instance/ classe

  3. #3
    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
    Je ne pense pas que ça vienne d'une erreur de paramétrage de struts, à priori, l'erreur serait plus explicite...

    Tu as peut-être un problème dans une des propriétés de l'ActionForm (conversion par exemple) qui fait que ça ne va pas plus loin.
    Tu peux déjà essayer de mettre une trace dans la méthode reset de l'ActionForm, celle-là est vraiment la première appelée, et rien ne peu l'empêcher... à moins bien sûr que la classe ne puisse être instanciée...

    Normalement, d'après ton paramétrage de l'action, la méthode validate devrait être appelée automatiquement, c'est l'attribut validate="true" qui provoque l'appel (validate="false" => plus d'appel)

    Peux-tu montrer le code de l'ActionForm ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Bonjour et merci de votre aide

    jayjaypg22 : il me semble que la propriété name n'est pas déterminante . D'après ce que j'ai compris, il suffit que l'attribut name du form-bean corresponde à celui d'une action pour matcher

    OButterlin : j'ai implémenter la méthode reset et pareil, il ne semble pas entrer dedans. J'ai simplifier au maximum le code (actuellement il n'y a plus que de l'affichage, 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
     
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
    	this.login = null;
    	this.password = null;
    	System.out.println("reset");
    }
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
    {
    	System.out.println("validate");
    	ActionErrors errors = new ActionErrors();
    	return errors;
    	/*try
    	{
    		return userConnection(request);
    	} 
    	catch (HibernateException e) 
            {
    		e.printStackTrace();
    		return null;
    	}
           */
     
    }

  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
    Si tu ne rentres pas dans reset, c'est certainement parce que la création de l'ActionForm échoue.
    Peux-tu vérifier dans la log ?

    Sans le code complet de la classe, ça va être difficile...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    voici le code complet de 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package fac.actions;
     
    import java.util.Iterator;
    import java.util.List;
     
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
     
     
     
    import net.sf.hibernate.HibernateException;
    import net.sf.hibernate.Query;
    import net.sf.hibernate.Session;
     
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
    import org.apache.struts.taglib.html.ResetTag;
     
    import fac.metier.Users;
    import fac.metier.base.HibernateUtil;
     
    public class ConnexionActionForm extends ActionForm 
    {
     
    	private static final long serialVersionUID = 9100914760156326337L;
     
    	private String login = null;
    	private String password = null;
    	public String getLogin() {
    		return this.login;
    	}
    	public void setLogin(String login) {
    		this.login = login;
    	}
    	public String getPassword() {
    		return this.password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	public void reset(ActionMapping mapping, HttpServletRequest request)
    	{
    		this.login = null;
    		this.password = null;
    		System.out.println("reset");
    	}
    	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    		System.out.println("validate");
    		ActionErrors errors = new ActionErrors();
    		return errors;
    		/*try
    		{
    			return userConnection(request);
    		} 
    		catch (HibernateException e) {
    			e.printStackTrace();
    			return null;
    		}*/
     
     
    	}
    Quand à la log, j'ai bien un fichier Struts_1539.log mais il est vide

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2013, 09h39
  2. Réponses: 5
    Dernier message: 19/06/2012, 21h19
  3. Problème Tomcat 6 ,struts 2 et hibernate
    Par fedora8 dans le forum Struts 1
    Réponses: 1
    Dernier message: 25/01/2012, 11h55
  4. Problème Struts 2 Hibernate
    Par bruno.getJava() dans le forum Struts 2
    Réponses: 7
    Dernier message: 26/10/2010, 15h06

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