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 :

accès page avec un form => java.lang.IllegalAccessException


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    Points : 672
    Points
    672
    Par défaut accès page avec un form => java.lang.IllegalAccessException
    Bonjour,

    Ca va faire maintenant un an que j'ai pas touché à un projet struts et me voila atteint de la plus grande des amnésies. Je n'arrive pas à lier un formulaire situé dans une JSP à mon actionForm. Sur le projet, nous utilisons struts Tiles pour construire nos pages.

    J'obtiens l'erreur suivante lorsque j'essaye d'acceder à la page:
    19 avr. 2008 12:28:20 org.apache.struts.util.RequestUtils createActionForm
    GRAVE: Error creating form bean of class fr.argosi.administration.InfoPersoForm
    java.lang.IllegalAccessException: Class org.apache.struts.config.FormBeanConfig can not access a member of class fr.argosi.administration.InfoPersoForm with modifiers ""
    at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:289)
    at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:254)
    at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:208)
    at org.apache.struts.action.RequestProcessor.processActionForm(RequestProcessor.java:319)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:192)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
    Le corps de la page que j'essaye d'atteindre (version très simplifiée)
    Appel fait par l'intermédiaire d'un lien: infoPerso.do
    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
     
    <%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
    <html:form method="post" action="enregistrer.do" >
        <center>
            <table>
                <tr>
                    <td><label>Intitule </label></td>
                    <td><html:text property="intitule" /></td>
                </tr>
                <tr>
                    <td><label>Nom Entreprise</label></td>
                    <td><html:text property="nomEntreprise" /></td>
                </tr>
            </table>
        </center>
    </html:form>

    Le Struts-config.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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
        "http://struts.apache.org/dtds/struts-config_1_2.dtd">
    <struts-config>
        <!-- ======== Form Bean Definitions ======== -->
        <form-beans>
            <form-bean name="formInfoPerso" type="fr.argosi.administration.InfoPersoForm" />
        </form-beans>
     
        <!-- ======== Action Mapping Definitions ======== -->
        <action-mappings>
            <action path="/infoPerso" 
                    name="formInfoPerso"
                    type="fr.argosi.administration.InfoPersoAction"
                    scope="request">
                <forward name="success" path="infoPerso"/>
            </action>
        </action-mappings>
     
        <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
     
     
        <!-- ======== Tiles plugin ======== -->
        <plug-in className="org.apache.struts.tiles.TilesPlugin">
            <set-property     property="definitions-config"
                            value="    /WEB-INF/config/tiles-defs.xml"/>
            <set-property property="moduleAware" value="true"/>
        </plug-in>
     
        <!-- ======== Validator plugin ======== -->
        <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property     property="pathnames"
                            value="    /WEB-INF/config/validator-rules.xml"/>
        </plug-in>
    </struts-config>
    L'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
     
    package fr.argosi.administration;
     
    import javax.servlet.http.HttpServletRequest;
     
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
     
    public class InfoPersoForm extends ActionForm {
     
        /**
         * Numero de serial automatique.
         */
        private static final long serialVersionUID = -3211966788964671747L;
     
        private String intitule = null;
     
        private String nomEntreprise = null;
     
        public String getIntitule() {
        return intitule;
        }
     
        public void setIntitule(String intitule) {
        this.intitule = intitule;
        }
     
        public String getNomEntreprise() {
        return nomEntreprise;
        }
     
        public void setNomEntreprise(String nomEntreprise) {
        this.nomEntreprise = nomEntreprise;
        }
    }
    La classe action:
    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
    package fr.argosi.administration;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    public class InfoPersoAction extends Action {
     
        public ActionForward execute(ActionMapping mapping, ActionForm form,
              HttpServletRequest request, HttpServletResponse response){        
            return mapping.findForward("success");
        }
    }
    Si vous pouvez m'aider, je vous en serais très reconnaissant. Je continue cependant à rechercher de mon coté car ce problème est vraiment bloquant pour le projet :p.
    Merci d'avance.

  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
    Dans le code du struts-config.xml que tu as posté, on ne voit pas le mapping de l'Action de path /enregistrer.
    Peux-tu le montrer ?
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre éclairé 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
    Points : 672
    Points
    672
    Par défaut
    Je ne l'ai pas encore mis en place. De toute manière, ça n'a pas encore une grande importance, à priori, dans la mesure où je n'arrive pas afficher ma page contenant le formulaire. Quand j'essaye d'aller dessus, j'ai le droit à une magnifique page ... vide de tout contenu (il n'y a absolument rien dans le code source).
    J'ai en contrepartie de ma page blanche, l'erreur que je vous ai cité ci dessus.

  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
    Il me semble qu'on a ce style de message d'erreur quand on oublie de définir une classe en public.
    Or, dans ton cas, InfoPersoForm est bien définie comme public :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class InfoPersoForm extends ActionForm
    Donc, je ne vois pas pourquoi tu as ce message.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Membre actif Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Points : 278
    Points
    278
    Par défaut
    La déclaration de enregistrer.do me paraît indispensable, sans cette déclaration comment fait il pour retrouver le bean associé ?

  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
    Je suis d'accord avec coco62.
    Tu ne pourras pas accèder à la page jsp si tu ne crées pas l'Action de path /enregistrer et si tu ne la définis pas dans le struts-config.xml.
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre éclairé 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
    Points : 672
    Points
    672
    Par défaut
    Citation Envoyé par coco62 Voir le message
    La déclaration de enregistrer.do me paraît indispensable, sans cette déclaration comment fait il pour retrouver le bean associé ?
    Pour le moment, il est pas encore question de soumission de formulaire, de récupérer des informations et de traitement des données du formulaire. Le seul problème est que pour le moment, je n'ai aucun affichage, même pas un début (alors que le formulaire est définit dans 1 des 6 JSP appelé par Tiles à la construction). Alors qu'il me semblait, dans mes souvenirs toujours, que ce que j'ai fait à l'heure actuelle est suffisant pour avoir un test visuel.

    EDIT: Après un test de ce que ce tu as proposé, je n'ai toujours aucun résultat

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/01/2007, 13h46
  2. Réponses: 2
    Dernier message: 02/01/2007, 11h19
  3. pb avec invoke de java.lang.reflect.
    Par sebastien2222 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 28/04/2006, 13h33
  4. Réponses: 2
    Dernier message: 30/09/2005, 14h52
  5. Réponses: 10
    Dernier message: 23/11/2004, 18h14

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