Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1683 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Struts]Affichage de messages d'erreur avec html:errors

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Struts]Affichage de messages d'erreur avec html:errors

n°1541806
Rom1984
Posté le 12-04-2007 à 10:32:01  profilanswer
 

Bonjour à tous,
 
Je suis sur un projet de jeu accessible depuis le WAP (donc WML).
J'utilise le framework Struts pour le développer.
 
Voilà mon problème: je souhaite afficher des messages d'erreurs dans le cas où des informations sont incorrectes lors de la validation d'un formulaire.
J'ai suivi pas mal de tutoriels mais rien n'y fait, ils ne veulent pas s'afficher.
 
Commençons donc par le début et struts-config.xml

Code :
  1. <action
  2.             input="/partieCommune/wap/connexionJeu.jsp"
  3.             name="ValiderConnexionActionForm"
  4.             path="/login"
  5.             scope="session"
  6.             type="com.opensugar.wapgames.partiecommune.utilisateur.controleur.ValiderConnexionAction">
  7.                 <forward name="successJoueur" path="/jeu.do"/>
  8.                 <forward name="unsuccessJoueur" path="/partieCommune/wap/connexionJeu.jsp"/>
  9.         </action>


Le formulaire se situe dans la jsp connexionJeu, si la rentrée des informations est correcte, je me dirige vers jeu.do sinon, je reste sur connexionJeu.jsp où je suis censé afficher les messages d'erreurs.
 
Le formulaire est validé par ValiderConnexionActionForm, la redirection (forward) est assurée par ValiderConnexionAction. Les deux genèrent des messages d'erreurs (le validate de l'ActionForm renvoyant un ActionErrors et l'Action utilisant un saveErrors).
Je vous épargne le gros du code de ces deux classes mais voici les parties les plus importantes:

Code :
  1. public class ValiderConnexionAction extends Action {
  2.     // ...
  3.     private static final String UNSUCCESSJOUEUR = "unsuccessJoueur";
  4.    
  5.     public ActionForward execute(ActionMapping mapping, ActionForm form,
  6.             HttpServletRequest request, HttpServletResponse response)
  7.             throws Exception {
  8.         ValiderConnexionActionForm validerConnexionAdminActionForm =
  9.                 (ValiderConnexionActionForm) form;
  10.        
  11. System.out.println("Tentative de connexion d'un utilisateur" );
  12.        
  13.         String login = validerConnexionAdminActionForm.getLogin();
  14.         String password = validerConnexionAdminActionForm.getPassword();
  15.         String type = validerConnexionAdminActionForm.getType();
  16.        
  17.         // ...
  18.         } else {
  19.             ActionMessages errors = new ActionMessages();
  20.             ActionMessage error = new ActionMessage(
  21.                     "validerConnexion.errors.login.invalid" );
  22.             errors.add("connexionLoginWrong", error);
  23.             if (type.equals("joueur" )) {
  24.                 Statistique.log("Login", "JOUEUR_PASOK",
  25.                         "Tentative de connection de login [" + login + "]." );
  26.                 saveErrors(request, errors);
  27.                 return mapping.findForward(UNSUCCESSJOUEUR);
  28.         // ...
  29.         }
  30. }


 

Code :
  1. public class ValiderConnexionActionForm extends
  2.         org.apache.struts.action.ActionForm {
  3.    
  4.     /**
  5.      * login saisi.
  6.      */
  7.     private String login;
  8.    
  9.     /**
  10.      * mot de passe saisi.
  11.      */
  12.     private String password;
  13.    
  14.     /**
  15.      * si c'est une demande de connexion d'un joueur ou d'un administrateur.
  16.      */
  17.     private String type;
  18.    
  19.     /**
  20.      * @return login
  21.      */
  22.     public String getLogin() {
  23.         return login;
  24.     }
  25.    
  26.     /**
  27.      * @param string
  28.      *            login
  29.      */
  30.     public void setLogin(String string) {
  31.         login = string;
  32.     }
  33.    
  34.     /**
  35.      * @return mot de passe
  36.      */
  37.     public String getPassword() {
  38.         return password;
  39.     }
  40.    
  41.     /**
  42.      * @param string
  43.      *            mot de passe
  44.      */
  45.     public void setPassword(String string) {
  46.         password = string;
  47.     }
  48.    
  49.     /**
  50.      *
  51.      */
  52.     public ValiderConnexionActionForm() {
  53.         super();
  54.         // TODO Auto-generated constructor stub
  55.     }
  56.    
  57.     /**
  58.      * @param mapping
  59.      *            mapping d'entrée
  60.      * @param request
  61.      *            requete d'entrée
  62.      * @return les erreurs
  63.      */)
  64.     public ActionErrors validate(ActionMapping mapping,
  65.             HttpServletRequest request) {
  66.         ActionErrors errors = new ActionErrors();
  67.         if (getLogin() == null || getLogin().length() < 1) {
  68.             errors.add("connexionNameEmpty", new ActionMessage(
  69.                     "validerConnexion.error.name.required" ));
  70.            
  71.         }
  72.         if (getPassword() == null || getPassword().length() < 1) {
  73.             errors.add("connexionPasswordEmpty", new ActionMessage(
  74.                     "validerConnexion.error.password.required" ));
  75.            
  76.         }
  77.         return errors;
  78.     }
  79.    
  80.     /**
  81.      * @return Retourne le champs type.
  82.      */
  83.     public String getType() {
  84.         return type;
  85.     }
  86.    
  87.     /**
  88.      * @param type La valeur a mettre dans l'attribut type.
  89.      */
  90.     public void setType(String type) {
  91.         this.type = type;
  92.     }
  93. }


 
Dans les ActionMessage, j'assigne un nom de propriété (connexionNameEmpty e.g.) ainsi qu'un taglib définit dans le fichier de ressources pour chaque type d'erreur.
 
Pour terminer: un extrait de la JSP

Code :
  1. <wml:form action="login">
  2.             <logic:notPresent name="joueur">         
  3.                 <small>
  4.                     <p align="center">
  5.                         <small><b><bean:message key="cConnexionJeu.identification"/></b></small>
  6.                     </p>
  7.                     <html:errors property="connexionNameEmpty"/>
  8.                     <html:errors property="connexionPasswordEmpty"/>
  9.                     <html:errors property="connexionLoginBanni"/>
  10.                     <html:errors property="connexionLoginWrong"/>
  11.                     <html:errors property="connexionLoginDejaLogge"/>
  12.                     <table>
  13.                         <tr>
  14.                             <td width="150">
  15.                                 <bean:message key="cAcc.idf"/>&#32;
  16.                             </td><td>
  17.                                 <wml:text property="login"/><br/>
  18.                             </td>
  19.                         </tr><tr>
  20.                             <td>
  21.                                 <bean:message key="cAcc.pwd"/>&#32;
  22.                             </td><td>
  23.                                 <wml:password property="password"/><br/>
  24.                             </td>
  25.                         </tr>
  26.                     </table>
  27.                 </small>
  28.                 <small>
  29.                     <anchor>
  30.                         <u><bean:message key="cAcc.seLoguer"/></u>
  31.                         <wml:go action="login" method="post">
  32.                             <postfield name="login" value="$login" />
  33.                             <postfield name="password" value="$password"/>
  34.                             <postfield name="type" value="joueur"/>
  35.                         </wml:go>
  36.                     </anchor>
  37.                 </small>
  38.                 <small><br/>
  39.                     <bean:message key="page.separateur"/>
  40.                     <br/>
  41.                     <wml:link href="#cInscr"><bean:message key="cAcc.sInscrire"/></wml:link>
  42.                 </small>
  43.             </logic:notPresent>
  44.            
  45.             <logic:present name="joueur">
  46.                 <small>
  47.                     <anchor>
  48.                        <u> <bean:message key="general.jouer"/></u>
  49.                         <wml:go action="jeu" method="post"/>
  50.                     </anchor>
  51.                     <br/>
  52.                     <anchor>
  53.                         <u><bean:message key="general.deconnecter"/></u>
  54.                         <wml:go action="deconnecterJoueur" method="post"/>
  55.                     </anchor>
  56.                 </small>
  57.             </logic:present>         
  58.             <br/>
  59.         </wml:form>


 
J'utilise ici des html:errors sur chacune des propriétés, j'ai aussi essayé la balise <html:errors /> seule et <html:errors property="org.apache.struts.action.ERROR" /> (vu dans un des topics de ce forum), chacune de ces solutions a été testée dans et en dehors du formulaire.
 
Et donc je suis bloqué ici, dans l'incapacité de les afficher. :pt1cable:  
Si vous voyez d'où le problème provient, ça me serait d'une très grande aide, merci d'avance :D

mood
Publicité
Posté le 12-04-2007 à 10:32:01  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Struts]Affichage de messages d'erreur avec html:errors

 

Sujets relatifs
banaliser de l'htmlProblème d'affichage d'un tableau
message erreuraffichage xml dans explorer
Gestion de la navigation par jour avec nombre d'affichage limité svp[RESOLU] Erreur dans galerie en JavaScript.
[html/css/js ??] script de screenshot [resolu]erreur de boucle with ? [résolu]
Petit tagboard : 20 dernier messagesErreur balise select avec onchange sous opera
Plus de sujets relatifs à : [Struts]Affichage de messages d'erreur avec html:errors


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR