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 :

ActionError et validate


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut ActionError et validate
    J'ai un petit pb avec les ActionError
    j'ai regardé un peu comment ca marchait surtout ici car ily a déjà plusieurs topics qui en parle... mais je m'en sors pas mes deux semaines de connaissance sur Struts me sont pas d'une grde utilité ...
    en fait j'ai une jsp lancé avec différents champs...si le champs appelé libelleMenu est vide il y a une erreur...
    je fais appel a validate ds mon Action mais le truc c'est que je suis obligé moi même de codé en dur où il doit aller si il y a une erreur et en plus il me marque pas mon message d'erreur ...
    si vous pouviez m'éclairer...
    jvous mets un peu de code :
    mon Form :
    public class CreationMenuForm extends ActionForm {

    private String libelleMenu;
    private String typeMenu;
    private String idSousMenuPere;
    les accesseurs/getteurs ....
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    ActionErrors errors = new ActionErrors();
    if (this.getLibelleMenu().equals("") || this.getLibelleMenu()==null){
    errors.add("libelleMenu",new ActionMessage("erreur.creeMenu.libelleMenu.requis"));
    // TODO: add 'error.name.required' key to your resources
    }

    return errors;
    }
    mon Action :
    public class CreationMenuAction extends DispatchAction{


    public ActionForward save(ActionMapping actionMapping,
    ActionForm actionForm, HttpServletRequest request,
    HttpServletResponse httpServletResponse)
    throws Exception {

    CreationMenuForm form = (CreationMenuForm)actionForm;
    if(form.getTypeAction().equals("rafraichissement"))
    {
    return actionMapping.findForward("afficherCreaMenu");
    }
    else
    {
    ActionErrors errors = form.validate(actionMapping, request);
    if (errors==null){return actionMapping.findForward("validerCreaMenu");}
    else {return actionMapping.findForward("afficherCreaMenu");}
    }
    }
    sachant que j'ai une fonciton load qui initie mes champs...

    et dans mon struts-config j'ai mis un <message-resource> vers un fichier applications.properties ...??!!

    merciii d'avance car là je nage pas mal !!!!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActionErrors errors = form.validate(actionMapping, request);
    il ne faut surtout pas faire cela !

    Dans ton struts-config, tu dois avoir un action mapping auquel tu fais appel avec ton Formulaire (quand tu le submit), tu lui ajoute ceci :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    validate=true input="l'action_mapping_du_formulaire"

    Il fera automatiquement appel a la méthode validate de ton formulaire, et te renverra sur la page indiquée dans "input"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    ouais ouais le truc c'est que j'ai déjà essayé mais ca marche po ... enfin jvais réessayer ... mais j'ai suivi ce qui était expliqué ici

    http://www.developpez.net/forums/sho...53#post1880553

    pis le truc c que j'initialise mes champs à vide ac un appel à une action et jveux justement que après validation ces champs ne soient plus vide ... et si jmets validate="true" il va me mettre une erreur dès le chargement de la page ?!

    merchiii

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Comme tu fais appel a la méthode validate que lorsque tu fais l'action mapping qui est appelé lors du submit de ton formulaire .. ca ne devrais pas poser de problème ... (il faut faire deux action mapping differents ... un que tu appelles quand tu envoies le formulaire et un que tu appelles quand tu veux afficher le formulaire)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    euhhh ouais je vois bien ... mais dans ce cas là ca sert plus à rien que j'utilise DispatchAction ? et ca mutliplie par 2 le nombre d'action ds mon struts-config...puisque cette initialisation je vais la faire pr chaque page ?!

    c pas simple ...

    merci

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Ah ok, autant pour moi, essaye ceci pour recupérer tes message du ApplicationRessources.properties :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MessageResources messageResources = getMessageResources(request);
    String msg = messageResources.getMessage(request.getLocale(), "erreur.creeMenu.libelleMenu.requis");
    errors.add("libelleMenu",new ActionMessage(msg));

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    euhhh à quel niveau j'écris ca ?!
    parce qu'en fait là il se passe qu'il détecte l'erreur mais qu'il sait pas quoi faire c'est ca ?!
    parce qu'en le forçant à retourner sur la page il devrait m'afficher le msg grçace au tag<html:errors/>

    merki

  8. #8
    Expert confirmé

    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
    Par défaut
    Dans ton Action, tu as oublié d'appeler la méthode saveErrors.
    De plus, normalement, s'il y a une erreur, on redirige vers la jsp ou le path de l'Action spécifiée dans l'attribut input dans le mapping de l'Action.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ActionMessages errors = form.validate(mapping,request);
    if ( !errors.isEmpty() )
    {
    	saveErrors(request,errors);
    	return mapping.getInputForward() ;
    }
    else {return actionMapping.findForward("afficherCreaMenu");}
    Ceci suppose que l'attribut validate est à false dans le mapping de l'Action.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    Salut

    merci bcp pr ce ptit bout de code en effet il me detecte l'erreur va bien dans le bon forward par contre il m'affiche la page très bizarrement ...
    il ne trouve plus les fichiers scripts que j'y inclue et même pas non la feuille css..et pas de message d'erreur non plus <html:errors/>

    mercii !!!!

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    en fait je crois qu'il m'affiche la page mais il devrait faire un redirect="true" j'ai essayé mais ca marche pas ...
    voilà le code de tout ca pr que ce soit plus clair :

    ds mon Form :
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    ActionErrors errors = new ActionErrors();
    if (this.getLibelleMenu().equals("") || this.getLibelleMenu()==null){
    errors.add("libelleMenu",new ActionMessage("erreur.creeMenu.libelleMenu.requis"));
    // TODO: add 'error.name.required' key to your resources
    }

    return errors;
    }
    ds mon Action
    else
    {
    ActionMessages errors = form.validate(actionMapping,request);
    System.out.println("toString de errors");
    System.out.println(errors.toString());
    if (!errors.isEmpty() )
    {
    saveErrors(request, errors);
    return actionMapping.getInputForward() ;
    }
    else {
    return actionMapping.findForward("validerCreaMenu");
    }
    enfin ds mon struts-config.xml:
    <action path="/creationMenu" name="CreationMenuForm" type="paf.control.CreationMenuAction" validate="false" parameter="dispatch" input="/jsp/creationMenu.jsp">
    <forward name="afficherCreaMenu" path="/jsp/creationMenu.jsp" redirect="true" />
    <forward name="validerCreaMenu" path="/jsp/validationMenu.jsp" redirect="true" />
    </action>
    mercki !!

  11. #11
    Expert confirmé

    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
    Par défaut
    Et le code de la jsp ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    oups ... oui c vrai
    [...]
    <script>cache();montreetital('creation','CM');</script>
    <div id="corpspage" >
    <div align="center">
    <br>
    <h3>Creation Menu</h3>
    <html:errors/>
    <html:form action="creationMenu.do?dispatch=save" method="POST" focus="libelleMenu">
    <html:hidden name="CreationMenuForm" property="typeAction"/>

    <table id="tableauGauche">
    <tr>
    <td>Type Menu </td>
    <bean:define id="typeM">
    <logic:notEmpty name="CreationMenuForm" property="typeMenu"><bean:write name="CreationMenuForm" property="typeMenu"/></logic:notEmpty>
    <logic:empty name="CreationMenuForm" property="typeMenu">1</logic:empty>
    </bean:define>

    <td><html:select name="CreationMenuForm" property="typeMenu" onchange="javascript:changerTypeAction('rafraichissement','CreationMenuForm');document.forms['CreationMenuForm'].submit();" value='<%=typeM%>'>
    <html:option value="1">Menu</html:option>
    <html:option value="2">Sous-Menu</html:option>
    <html:option value="3">Fonction</html:option>
    </html:select></td>

    </tr>
    <tr>
    <td>Libellé </td>
    <td><html:text property="libelleMenu" /></td>
    </tr>
    <tr>
    <td>Position </td>
    <td><html:text property="position" /></td>
    </tr>
    <logic:equal name="CreationMenuForm" property="typeMenu" value='2'>
    <tr>
    <td>Menu pere</td>
    <td><html:select property="idPere" value="1">
    <html:option value="1">Rentes</html:option>
    <html:option value="2">Contrats</html:option>
    <html:option value="3">...</html:option>
    </html:select>
    </td>
    </tr>

    </logic:equal>

    <logic:equal name="CreationMenuForm" property="typeMenu" value='1'>
    <tr>
    <td>
    <html:select multiple="true" property="OEDispo" >
    <html:options property="OEDispo"/>
    </html:select>
    </td>

    <td rowspan="2" style="text-align:center"><html:button property="AjoutValPoss" value=">>>" onclick="javascript:selection_champs(document.forms['CreationMenuForm'].elements['OEDispo'],document.forms['CreationMenuForm'].elements['OESelect']);"></html:button><br>
    <html:button property="AjoutValPoss" value='<<<' onclick="javascript:selection_champs(document.forms['CreationMenuForm'].elements['OESelect'],document.forms['CreationMenuForm'].elements['OEDispo']);"></html:button>
    </td>

    <td>
    <html:select multiple="true" property="OESelect">
    <html:options property="OESelect"/>
    </html:select>
    </td>
    </tr>

    </logic:equal>
    [...]
    <br>
    <BR>
    <%
    GregorianCalendar calendar = new java.util.GregorianCalendar();
    int moisInt = calendar.get(Calendar.MONTH) + 1;
    int jourInt = calendar.get(Calendar.DAY_OF_MONTH)+1;
    String mois;
    String jour;
    // Test afin d'avoir le jour sous forme 0x
    if (jourInt < 10) {
    jour = "0" + jourInt;
    } else {
    jour = "" + jourInt;
    }

    //Test afin d'avoir le mois sous forme 0x
    if (moisInt < 10) {
    mois = "0" + moisInt;
    } else {
    mois = "" + moisInt;
    }
    %>
    Date d'effet : <html:text size="2" value='<%=jour%>' property="jour" />/<html:text size="2" value='<%=mois%>' property="mois" />/<html:text size="4" value='<%=""+calendar.get(Calendar.YEAR)+""%>' property="annee" /><br>
    <html:submit property="button" value="Valider" onclick="changerTypeAction('valider','CreationMenuForm');ttSelectionner(document.forms['CreationMenuForm'].elements['OESelect']);"/>
    <html:submit property="button" value="Annuler" onclick="javascript:changerTypeAction('Annuler','CreationMenuForm')"/>
    </html:form>
    </div>
    </div>


    </body>
    </html:html>
    là j'ai enlevé quelques trucs mais jpense pas que ce soit qui va poser problème....
    voilouuuuu

  13. #13
    Expert confirmé

    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
    Par défaut
    Désolée mais je ne comprends pas pourquoi le message d'erreur ne s'affiche pas dans la page jsp.

    Tu as bien défini erreur.creeMenu.libelleMenu.requis dans ton fichier properties ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    euhhh vi j'ai mis ca :
    erreur.creeMenu.libelleMenu.requis=<li>Vous devez rentrer un libellé</li>
    errors.header=<ul>
    errors.footer=</ul>
    ds un fichier applications.properties dans le dossier WEB-INF
    mais c quand même bizarre qu'il trouve pas la css et les scripts.
    c qd même pas simple StRuTs ....

    merci qd même c_nvy

  15. #15
    Expert confirmé

    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
    Par défaut
    comment la feuille de style est-elle incluse dans la jsp ?

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    <%@ page language="java" import="java.util.*"%>
    <%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
    <%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

    <html:html>
    <head>
    <link rel="stylesheet" href="../css/stylePAF.css" type="text/css" />
    <title>PAF - Création Menu</title>

    <script language="javascript" src="../scripts/fonctionMenu.js"></script>
    <script language="javascript" src="../scripts/fonctions.js"></script>
    </head>

    <body>
    voilou le début de ma JSP

  17. #17
    Expert confirmé

    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
    Par défaut
    Essaie ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <link rel="stylesheet" href="<%=request.getContextPath()%>/css/stylePAF.css" type="text/css" />

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    youhou du coup c bon ca marche ...
    mais j'ai pas le message d'erreur !!!
    bon j'ai déjà le input qui marche

    merciiiiiiiiiiiiiii

  19. #19
    Expert confirmé

    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
    Par défaut
    J'ai relu une de tes réponses et tu dis que tu as mis le fichier application.properties sous WEB-INF.
    Il devrait être sous WEB-INF/classes.
    Est-ce bien le cas ?

    Et comment l'as-tu référencé dans le struts-config.xml ?

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    alors alors ds mon WEB-INF j'ai pas de sous dossiers classes c pour ca que je l'ai mis direct ds WEB-INF ...
    et dans mon struts-config j'ai :
    <message-resources parameter="/WEB-INF/applications" />
    dc voilou

    merci

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

Discussions similaires

  1. Probleme formulaire + ActionErrors validate
    Par g.greg45 dans le forum Struts 1
    Réponses: 7
    Dernier message: 25/01/2007, 17h21
  2. ActionErrors vide pour mes validator-rules
    Par anayathefirst dans le forum Struts 1
    Réponses: 11
    Dernier message: 24/01/2007, 01h19
  3. [Struts] Validate Form et ActionError
    Par cosmos38240 dans le forum Struts 1
    Réponses: 4
    Dernier message: 25/10/2005, 16h00
  4. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54
  5. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46

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