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 :

Création d'Action Mapping personnalisée.


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut Création d'Action Mapping personnalisée.
    Bonjour,

    J'ai un petit soucis pour la création d'un ActionMapping personnalisé avec Struts v1.2.7
    Qqu'un peut m'aider ? Voici :

    Mon web.xml :


    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app PUBLIC "-//SUN Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

    <web-app>

    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>

    <init-param>
    <param-name>mapping</param-name>
    <param-value>appli.MonActionMapping</param-value>
    </init-param>


    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>

    <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>

    </web-app>


    Mon Struts-config.xml :

    <?xml version="1.0" encoding="ISO-8859-1" ?>

    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

    <struts-config>

    <form-beans>
    <form-bean name="lookupForm" type="monAppli.LookupForm" />
    </form-beans>

    <action-mappings>
    <action path="/Lookup"
    type="appli.LookupAction"
    name="lookupForm"
    validate="true"
    input="/index.jsp"
    >
    <set-property property="logResultats" value="true" />
    <forward name="succes" path="/cotation.jsp"/>
    <forward name="echec" path="/index.jsp"/>
    </action>
    </action-mappings>

    <message-resources parameter="monAppli.ApplicationResources"/>

    </struts-config>


    Ma classe utilisant un objet étendu par ActionMapping :

    package appli;

    import java.io.IOException;

    import javax.servlet.ServletException;
    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;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionError;


    public class LookupAction extends Action {

    protected Double getCotation(String symbole){

    if (symbole.equalsIgnoreCase("SUNW")){
    return new Double(25.00);
    }
    return null;
    }

    public ActionForward execute(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws IOException, ServletException {

    MonActionMapping monMapping =(MonActionMapping)mapping;

    Double cours = null;

    //Cible par défaut
    String cible = new String("succes");
    String symbole = null;

    if ( form != null ) {

    //Utilisation de LookupForm pour obtenir les paramètres de la requête
    LookupForm lookupForm = (LookupForm)form;


    symbole = lookupForm.getSymbole();

    cours = getCotation(symbole);
    }

    //Cible en cas d'echec
    if ( cours == null ){
    cible = new String("echec");

    ActionErrors erreurs = new ActionErrors();
    erreurs.add(ActionErrors.GLOBAL_ERROR,
    new ActionError("errors.symbole.inconnu", symbole));

    //Signalement des erreurs à la page d'origine if (!erreurs.isEmpty()){
    saveErrors(request, erreurs);
    }
    }else{

    if (monMapping.getLogResultats()){
    System.err.println("SYMBOLE:"+symbole+" Cours:"+cours);
    }

    request.setAttribute("COURS", cours);
    }
    //Transmission à la vue appropriée
    return (mapping.findForward(cible));
    }
    }


    LE SOUCIS :

    exception

    javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:112)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)


    cause mère

    javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
    org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:741)
    org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:443)
    org.apache.jsp.index_jsp._jspx_meth_html_form_0(index_jsp.java:143)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:102)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

    Me suis je trompé dans la configuration du struts-config.xml ?

    DarkWark

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    Personne ne vois d'ou vien le soucis ?

  3. #3
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Dans le struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <action-mappings type="appli.MonActionMapping">

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    Très bien,

    Il semble qu'il n'arrive pas a retrouver le mapping concernant la propriété du set-property. Je pense ne pas avoir mis la propriété au bon endroit ... Ou alors je dois peut etre déclaré un bean ???? ...

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    Au fait c ma première application Struts... Un peu d'indulgence ...

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    Une petite explication ... ? c possible ?

  7. #7
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Je sais pas trop, tu sais moi aussi je débute, alors j'ai pris sur un exemple que j'ai en projet

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    Ok ! Je voudrai savoir se qu'il ne vas pas pour avancer ! Tu n'as aucune explication a me donner, passe ton chemin ! merci et bonne soirée.

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    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
     
     <action
       path="/compute"
       type="com.shiftat.oreilly.web.ComputeAction"
       name="computeForm"
       scope="session"
       input="/jsp/compute.jsp"
       className=
        "com.shiftat.struts.StrutsPermissionMapping"
       unknown="false"
       validate="false">
     
       <set-property property="label" 
                     value="compute"/>
     
       <forward name="succes" 
                path="/jsp/result.jsp"
    	        redirect="false"/>
      </action>
    voilà un exemple d'utilsation d'une classe ActionMApping personnalisé; n'oublie de donner le nom complet de la classe dans input et dans la classe créer les property avec les setter et getter ..

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    Ok, J'ai bien un input de mis pour spécifier sur quel page je dois etre redirigé en cas d'erreur et dans la classe que je vous montre au dessus, j'instancie ma classe contenant les accesseurs et les modificateurs de la property via MonActionMapping monMapping =(MonActionMapping)mapping;
    . Moi je me demande si il n'y a pas un tag action a rajouter ou alors une bean ... je ne c pas ... ( c pour ça que j'ai besoin d'un conseil). Mais étant donner que j'invoque mon objet de type MonActionMapping dans la classe LookupAction, je pense que le set-property doit etre dans un action corespondant à LookupAction ... Mais ça marche pas ... ... ...

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    non ? y a vraiment personne ?

  12. #12
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Qu'elle est ton erreur???

  13. #13
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Citation Envoyé par DarkWark
    Ok ! Je voudrai savoir se qu'il ne vas pas pour avancer ! Tu n'as aucune explication a me donner, passe ton chemin ! merci et bonne soirée.
    Ca me fait plaisir d'aider quelqu'un qui envoie chier les autres...

  14. #14
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par BiMouXeTTe
    Citation Envoyé par DarkWark
    Ok ! Je voudrai savoir se qu'il ne vas pas pour avancer ! Tu n'as aucune explication a me donner, passe ton chemin ! merci et bonne soirée.
    Ca me fait plaisir d'aider quelqu'un qui envoie chier les autres...
    Salut BiMouXeTTe!

    J'ai même pas lu ce qu'il a ecrit sinon je n'aurais pas repondu; faut evincer les personnes irrespectueux envers les autres..!!


  15. #15
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    dsl pour l'agression mais c pas moi qui est commencé : Avant de trouver la solution, cherches la source du problème et comprend-la.

    ça c le genre de phrase qui merite une petite remarque vous ne trouvez pas ?

  16. #16
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Je l'avoue mais je ne demande qu'à comprendre

  17. #17
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    bon allez on arrete. Pour en revenir a mon mouton j'ai regarder dans les logs de tomcat et ceux ci me disent :

    Bean has no property named logResultats

    L'erreur initial dans IE est :

    javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)

    Il n'arrive pas a trouvé cette propriété...

    dans mon struts-config.xml j'ai :

    <action-mappings>
    <action path="/Lookup"
    type="appli.LookupAction"
    name="lookupForm"
    validate="true"
    input="/index.jsp"
    >
    <set-property property="logResultats" value="true" />
    <forward name="succes" path="/cotation.jsp"/>
    <forward name="echec" path="/index.jsp"/>
    </action>



    Donc c sur la valeur du set-property qu'il y a un problème... ou alors sur le bean utilisé pour cette action... Le truk que je comprend pas c que c par LookupAction que j'instancie ma classe contenant le paramètre "logResultats"...


    Mon Struts-config.xml :


    <?xml version="1.0" encoding="ISO-8859-1" ?>

    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

    <struts-config>

    <form-beans>
    <form-bean name="lookupForm" type="monAppli.LookupForm" />
    </form-beans>

    <action-mappings>
    <action path="/Lookup"
    type="appli.LookupAction"
    name="lookupForm"
    validate="true"
    input="/index.jsp"
    >
    <set-property property="logResultats" value="true" />
    <forward name="succes" path="/cotation.jsp"/>
    <forward name="echec" path="/index.jsp"/>
    </action>
    </action-mappings>

    <message-resources parameter="monAppli.ApplicationResources"/>

    </struts-config>


    Ma classe utilisant un objet étendu par ActionMapping :

    package appli;

    import java.io.IOException;

    import javax.servlet.ServletException;
    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;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionError;


    public class LookupAction extends Action {

    protected Double getCotation(String symbole){

    if (symbole.equalsIgnoreCase("SUNW")){
    return new Double(25.00);
    }
    return null;
    }

    public ActionForward execute(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws IOException, ServletException {

    MonActionMapping monMapping =(MonActionMapping)mapping;

    Double cours = null;

    //Cible par défaut
    String cible = new String("succes");
    String symbole = null;

    if ( form != null ) {

    //Utilisation de LookupForm pour obtenir les paramètres de la requête
    LookupForm lookupForm = (LookupForm)form;


    symbole = lookupForm.getSymbole();

    cours = getCotation(symbole);
    }

    //Cible en cas d'echec
    if ( cours == null ){
    cible = new String("echec");

    ActionErrors erreurs = new ActionErrors();
    erreurs.add(ActionErrors.GLOBAL_ERROR,
    new ActionError("errors.symbole.inconnu", symbole));

    //Signalement des erreurs à la page d'origine if (!erreurs.isEmpty()){
    saveErrors(request, erreurs);
    }
    }else{

    if (monMapping.getLogResultats()){
    System.err.println("SYMBOLE:"+symbole+" Cours:"+cours);
    }

    request.setAttribute("COURS", cours);
    }
    //Transmission à la vue appropriée
    return (mapping.findForward(cible));
    }
    }

  18. #18
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    donc le set-property doit etre mis dans une action de type lookupaction non ?

  19. #19
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par DarkWark
    donc le set-property doit etre mis dans une action de type lookupaction non ?
    Si tu as bien definis ta classe MonActionMapping , il faut ensuite le renseigner dans struts-config.xml, pour que Struts prenne l'actionmapping correspondante comme une instance de MonActionMapping et pas de ActionMapping.
    Cela se fait comme dans l'exemple que je t'ai donné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <action path="/Lookup"
    type="appli.LookupAction"
    name="lookupForm"
    validate="true"
    input="/index.jsp"
    className="appli.MonActionMapping "
    >
    MonActionMapping doit avoir les property que tu definis avec set-property et les getters et setters qui vont avec.

    Bon courage!!!

  20. #20
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Points : 88
    Points
    88
    Par défaut
    Ok très bien ! Merci pour tt les gars

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Mettre un tiles dans le input d'un action-mapping
    Par arnobidul dans le forum Struts 1
    Réponses: 9
    Dernier message: 16/04/2008, 22h01
  2. Menu flash probleme création d'action bouton
    Par corbisier dans le forum Flash
    Réponses: 3
    Dernier message: 18/12/2007, 17h18
  3. Réponses: 4
    Dernier message: 03/10/2006, 16h04
  4. [DX9][C#]Direct Input - Action mapping
    Par Imhotep dans le forum DirectX
    Réponses: 4
    Dernier message: 06/07/2006, 23h15
  5. [Struts][Tiles] Probleme d'action mapping avec un dynaform
    Par bluefox_du_974 dans le forum Struts 1
    Réponses: 3
    Dernier message: 28/03/2005, 22h47

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