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 :

Application Struts pas à pas avec Eclipse WTP et Tomcat [Tutoriel]


Sujet :

Struts 2 Java

  1. #21
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonsoir,

    Dans le squelette ou templage ("page.jsp" dans l'exemple) tu as le "<tiles:insert attribute="principal" />". A cet endroit, tu ne connais pas le contenu inséré. C'est d'ailleurs tout l'intérêt.

    C'est dans le tiles-defs.xml que c'est indiqué, pour chaque définition de page.
    Par exemple pour la définition de la page d'affichage (la première), ca sera /pages/listeCourses.jsp qui sera inséré à la place de "<tiles:insert attribute="principal" />"
    Cette définition est appelé lors du forward succes qui est indiqué dans le fichier struts-config.

    Info annexe, pour que cela fonctionne il faut que le plug-in de tiles soit déclaré dans la configuration struts avec le fichier tiles-defs.xml dont nous venons de parler.

    En espérant t'avoir apporter une réponse.
    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  2. #22
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Tiles
    Merci bcp,
    c'est clair maintenant.

  3. #23
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 9
    Points
    9
    Par défaut html:errors
    Bonjour,

    Je me mets a Java/Struts. Super tuto, merci !

    J'ai un seul probleme pas vraiment bloquant mais pour lequel je n'arrive pas a trouver d'info sur le net (ou je cherche mal, mais pourtant Google est mon bon ami tres tres souvent).

    Mon probleme est le suivant : les erreurs ne sortent pas sur le fichier erreur.jsp, par contre elles apparaissent dans la console.

    Niveau config j'ai eclipse tel que prévu dans l'exercice. Tomcat 6.0.29. Enfin l'erreur sort bien, en tracant je la vois remoter jusqu'a la classe [...]Action, la redirection sur la page erreur fonctionne. C'est juste que le tag html:errors n'affiche rien et que l'erreur apparait dans la console.

    Est-ce lié à Eclipse qui capture l'erreur entre deux ou ai-je manquer un parametrage au niveau du projet ou de Eclipse meme ?
    Je precise que j'ai relancer Eclipse, le probleme persiste.

  4. #24
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Déjà, merci pour l'appréciation.

    Il faut bien faire attention. La remontée d'erreurs n'est pas du tout automatique. Il y a plusieurs points à vérifier :
    - Il faut que l'Exception soit catchée comme dans la classe "ListeCoursesDAO". Si une erreur n'est pas catchée, elle se propagera est n'apparaitra que dans la console (Struts ne la mettra pas de lui même dans les erreurs pour la page).
    - Il faut que cette exception catchée soit ajoutée au erreur comme dans la classe ''AfficherListeCoursesAction', en faisant bien attention de n'oublier aucune des lignes (le saveErrors par exemple que j'ai déjà vu passer à la trappe de nombreuses fois, )

    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  5. #25
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Merci pour cette reponse matinale.

    Aux noms de classes près, j'ai reproduit le code à l'identique. Meme mieux : les erreurs sont tellement bien catchées qu'en fait pour etre sur, j'ai catché au niveau "Exception" (donc toute, absolument toutes).

    Quand je trace au niveau de la classe [...]Action, j'ai bien mon objet [...]Dao avec l'erreur dedans, la redirection se fait bien sur la page erreur.jsp mais... le message n'apparait pas.
    Il apparait en revanche bien dans la console.

    En fait je suis newbie sur struts, mais je connais assez bien java.
    C'est peut etre au niveau de mes config tomcat que j'ai raté un truc, d'autant que depuis mon dernier message, j'ai tout cassé en essayant de déclarer ma ressource MySQL correctement.

    Je vais tout reprendre depuis le debut.
    Aaah monde cruel !

  6. #26
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Je pense que ton problème provient
    - soit de ce qui est dans le struts-config.xml avec une erreur sur le <forward name="erreur" path="/pages/erreur.jsp" />.
    - soit l'action ne retourne pas le return pMapping.findForward("erreur");

    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  7. #27
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Aaaarg ! J'en ai mis du temps a comprendre...

    Donc rien de tout ca en fait. Le code était correct même adapté à mes besoins.

    Je bosse en presta pour une boite avec la consigne d'utiliser les mêmes versions de librairies que celles déjà utilisées.
    Et la version Struts est la 1.2.6... apres une petite mise a jour vers la version 1.3.10 (la 1.x la plus récente donc) : CA MARCHE !
    D'ailleurs la version 1.2.6 n'est meme plus disponible sur le site apache...

    Merci de ton aide et pour le tutorial

  8. #28
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Installation hsqldb
    Bonjour,
    je viens de commencer votre tuto, mais je suis bloqué à la deuxième partie pour l'installation de hsqldb. sinon j'aimerai bien savoir comment vous vous etez pris pour le faire. je suis sous Windows 7 et j'utilise les mêmes versions de logiciel.
    Merci

  9. #29
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    J'aurais besoin de plus de détails sur le blocage (ce qui est impossible à faire, message d'erreur, etc...).
    Sinon, j'ai réalisé le tutoriel tout simplement en installant les différents éléments et effectuant les opérations dans l'ordre indiqué.

    Bonne journée.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  10. #30
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    Hello Regis, je t'ai déjà envoyé un MP pour demander une aide concernant mon problème, mais j'écris également en public, ça pourra peut etre aider qqn plus tard...
    Au niveau de la modification, lorsque je lance :
    http://localhost:8080/MonApplication...isteCourses.do
    J'ai le message d'erreur suivant :
    (cause mère)

    java.lang.NullPointerException
    org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:289)
    org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:357)
    org.apache.struts.chain.commands.CreateActionForm.execute(CreateActionForm.java:92)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    Merci de l'aide !!!

  11. #31
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonsoir,

    Je suis parti de l'hypothèse que tu utilisais la version 1.3.10.

    Donc, d'après les sources de cette version, la ligne 289 correspond à l'instanciation du formulaire (ligne 5 ci-dessous) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            // Create a new form bean instance
            if (getDynamic()) {
                obj = getDynaActionFormClass().newInstance();
            } else {
                obj = formBeanClass().newInstance();
            }
    Et lorsque l'on regarde la méthode formBeanClass() à la toute fin du source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        protected Class formBeanClass() {
            ClassLoader classLoader =
                Thread.currentThread().getContextClassLoader();
     
            if (classLoader == null) {
                classLoader = this.getClass().getClassLoader();
            }
     
            try {
                return (classLoader.loadClass(getType()));
            } catch (Exception e) {
                return (null);
            }
        }
    On remarque que si le chargement de la classe se passe mal et qu'une Exception est levée par loadClass alors la méthode formBeanClass() retourne null d'où le NullPointerException.
    L'exception la plus vraisemblable est un ClassNotFoundException.

    Conclusion : dans ce cas, cela signifie que le nom de la classe de formulaire dans struts-config-modification.xml ne correspond pas à la classe de formulaire ModificationListeCoursesForm. Il faut également vérifier que la classe existe bien dans WEB-INF/classes/com/developpez/rpouiller/monapplication/.

    J'espère que cela t'aura aidé.

    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  12. #32
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    merci Régis,

    mon struts-config-modification.xml est le suivant :

    <form-beans>
    <form-bean name="modificationForm"
    type="com.developpez.rpouiller.monapplication.ModificationListeCoursesForm">
    <form-property name="listeCourses" type="java.util.List" />
    </form-bean>
    </form-beans>

    la classe est bien écrite, et elle est bien présente dans le package com.developpez.rpouiller.monapplication
    du coup je coince toujours ((

  13. #33
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    en outre, en relisant ton msg, je ne comprends pas quand tu dis que :
    "la classe existe bien dans WEB-INF/classes/com/developpez/rpouiller/monapplication/"
    cette classe doit plutot etre dans le SRC non ?

  14. #34
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    En fait, le dossier WEB-INF/classes contient les classes une fois qu'elles sont compilées.
    Je te suggère donc de vérifier que la classe compilée se trouve bien où elle doit être (comme toutes les autres classes de l'application).
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  15. #35
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    et comment on fait pour compiler les classes ?
    dans le WEB-INF j'ai seulement les lib et les fichiers xml

  16. #36
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    en creusant (encore et encore :p)...
    j'ai vu que les classes concernant la modif n'étaient pas compilées dans mon fichier build/classes etc...
    du coup la question : comment compiler ces classes ?
    merci d'avance

  17. #37
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Les points de vérification auxquels je pense sont :
    - Vérifier que le source de la classe est bien dans le même dossier (ou dossier parent s'il s'agit d'un package différent) qu'un autre source qui compile
    - Vérifier que Eclipse est bien en compilation automatique (En Anglais : Project > Build Automatically)
    - Vérifier qu'il n'y a pas de problèmes de compilation. Il faut afficher la vue "Problems" (Window > Show View > Problems)

    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  18. #38
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    ayé j'ai trouvé !!
    je pense que le commons collections n'était pas dans les libraries de java resources src... c'est pour ça que ça bugguait, qu'en penses tu ?

  19. #39
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    En effet, si tu as une librairie qui manque ca doit poser problème (tu devrais avoir des imports dans le source qui passe en erreur).
    Le plus simple est qu'elle soit dans le WEB-INF/lib et de bien avoir dans la librairie "Web App Libraries" ajoutée (Properties du projet > Java Build Path > Libraries).

    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  20. #40
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    autre chose, ce matin, j'avais un "!" sur mon projet
    ce que j'ai fait, c'est que lorsque j'ai téléchargé les lib en .jar et qui étaient tous en .zip, je les ai sauvegardées dans une clé usb, et j'ai tjs travaillé depuis une clé usb...
    les fichiers décompressés, ils sont à sauvegarder même si on les a copiés collés dans le dossier lib de WEBCONTENT/WEB-INF ?

Discussions similaires

  1. tortoise 1.6.9 pas synchro avec eclipse svn
    Par DevServlet dans le forum Subversion
    Réponses: 0
    Dernier message: 09/08/2011, 09h18
  2. Réponses: 0
    Dernier message: 25/03/2009, 19h45
  3. Réponses: 0
    Dernier message: 25/03/2009, 19h45
  4. Erreur "L'application n'est pas installée" avec ClickOnce
    Par Ishizaki dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/05/2008, 15h15
  5. struts avec Eclipse wtp
    Par paolo2002 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/03/2008, 19h24

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