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 :

<html:errors> et encodage de caractères


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut <html:errors> et encodage de caractères
    Bonjour,

    Je développe un jeu accessible depuis le wap (wml donc) en utilisant struts.

    1 - Le joueur doit se connecter au jeu via un formulaire (wml:form), il rentre son login et son mot de passe. Le tout est géré par une Action ValiderInscriptionAction et l'actionForm ValiderInscriptionActionForm. Le formulaire se trouve dans la JSP connexionJeu

    Voilà un extrait de struts-config.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            <form-bean name="ValiderConnexionActionForm" type="com.opensugar.wapgames.partiecommune.utilisateur.controleur.ValiderConnexionActionForm"/>
     
    ...
     
            <action input="/partieCommune/wap/connexionJeu.jsp" name="ValiderConnexionActionForm" path="/login" scope="session" type="com.opensugar.wapgames.partiecommune.utilisateur.controleur.ValiderConnexionAction">
                <forward name="successJoueur" path="/jeu.do"/>
                <forward name="unsuccessJoueur" path="/partieCommune/wap/connexionJeu.jsp"/>
                <forward name="successAdmin" path="/partieCommune/html/index.jsp"/>
                <forward name="unsuccessAdmin" path="/partieCommune/html/index.jsp"/>
            </action>
    Mon but est d'afficher les messages d'erreurs provoqués par de mauvaises données rentrées, chose qui ne s'effectue pas. Autre chose, je ne m'occupe que des forward successJoueur et unsuccessJoueur !

    Dans connexionJeu.jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
           <wml:form action="login">
                <logic:notPresent name="joueur">				      
                    <small>
                        <html:errors property="connexionNameEmpty"/>
                        <html:errors property="connexionPasswordEmpty"/>
                        <html:errors property="connexionLoginBanni"/>
                        <html:errors property="connexionLoginWrong"/>
                        <html:errors property="connexionLoginDejaLogge"/>
    ...
    Méthode validate de 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
        public ActionErrors validate(ActionMapping mapping,
                HttpServletRequest request) {
    System.out.println("Tentative de connexion d'un utilisateur dans le form");
            ActionErrors errors = new ActionErrors();
            if (getLogin() == null || getLogin().length() < 1) {
    System.out.println("Dans validerconnexionactionform => name required");
                errors.add("connexionNameEmpty", new ActionMessage(
                        "validerConnexion.error.name.required"));
     
            }
            if (getPassword() == null || getPassword().length() < 1) {
    System.out.println("Dans validerconnexionactionform => password required");
                errors.add("connexionPasswordEmpty", new ActionMessage(
                        "validerConnexion.error.password.required"));
     
            }
            return errors;
        }
    Méthode execute de l'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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            ValiderConnexionActionForm validerConnexionAdminActionForm =
                    (ValiderConnexionActionForm) form;
    System.out.println("Tentative de connexion d'un utilisateur");
     
            String login = validerConnexionAdminActionForm.getLogin();
            String password = validerConnexionAdminActionForm.getPassword();
            String type = validerConnexionAdminActionForm.getType();
     
            WapGame jeuEnregistre = WapGame.getWapGame(
                    Configuration.JEU_NOM_BASE);
            UtilisateurEnregistre utilisateurEnregistre = null;
            try {
                utilisateurEnregistre = jeuEnregistre.seConnecter(login, password);
            } catch (JoueurBanniException ex) {
                ActionMessages errors = new ActionMessages();
                ActionMessage error = new ActionMessage(
                        "validerConnexion.errors.banni", ex.getMessage());
                errors.add("connexionLoginBanni", error);
                saveErrors(request.getSession(), errors);
                Statistique.log("Login", "JOUEUR_BANNI",
                        "Tentative de connection de login [" + login + "].");
                return mapping.getInputForward();
            } catch (JoueurDejaLoggeException ex) {
                ActionMessages errors = new ActionMessages();
                ActionMessage error = new ActionMessage(
                        "validerConnexion.errors.dejaLogge", ex.getMessage());
                errors.add("connexionLoginDejaLogge", error);
                saveErrors(request.getSession(), errors);
                Statistique.log("Login", "JOUEUR_DEJALOGGE",
                        "Tentative de connection de login [" + login + "].");
                return mapping.getInputForward();
            }
     
            if (utilisateurEnregistre != null) {
                // si c'est un utilisateur enregistré il faut
                // verifier ensuite si c'est un joueur ou un admin
                if (utilisateurEnregistre.isJoueur()) {
                    ((Joueur) utilisateurEnregistre).setSessionId(
                            request.getSession().getId());
                    Langue langue = utilisateurEnregistre.getLangueChoisie();
                    request.getSession().setAttribute("joueur",
                            utilisateurEnregistre);
                    request.getSession().setAttribute("dossierCourant",
                            Configuration.NOM_BOITE_RECEPTION);
                    request.getSession().setAttribute("langue", langue);
                    if (langue != null) {
                        setLocale(request, new Locale(langue.getAcronyme()));
                    }
                    Statistique.log("Login", "JOUEUR_OK",
                            "Tentative de connection de login [" + login + "].");
                    return mapping.findForward(SUCCESSJOUEUR);
     
                } else if (utilisateurEnregistre.isAdministrateur()) {
                    request.getSession().setAttribute(Configuration.LOGIN_ADMIN,
                            utilisateurEnregistre);
     
                    return mapping.findForward(SUCCESSADMIN);
                } else {
                    ActionMessages errors = new ActionMessages();
                    ActionMessage error = new ActionMessage(
                            "validerConnexion.errors.login.invalid");
                    errors.add("connexionLoginWrong", error);
                    saveErrors(request.getSession(), errors);
                    return mapping.findForward(UNSUCCESSADMIN);
                }
     
            } else {
                ActionMessages errors = new ActionMessages();
                ActionMessage error = new ActionMessage(
                        "validerConnexion.errors.login.invalid");
                errors.add("connexionLoginWrong", error);
                saveErrors(request.getSession(), errors);
                if (type.equals("joueur")) {
                    Statistique.log("Login", "JOUEUR_PASOK",
                            "Tentative de connection de login [" + login + "].");
                    return mapping.findForward(UNSUCCESSJOUEUR);
                } else if (type.equals(Configuration.LOGIN_ADMIN)) {
                    return mapping.findForward(UNSUCCESSADMIN);
                } else {
                    return mapping.getInputForward();
                }
            }
        }
    Tous les tags utilisés pour gérer les erreurs sont définis dans l'ApplicationRessouce.properties

    Si vous voyez d'où ça pourrait venir, ce serait vraiment sympa ^^

    2 - Mon second problème est un problème d'encodage de caractères.
    J'ai lu un peu partout (dont la FAQ Struts), d'utiliser la propriété filter dans un bean:write. Mon problème est que j'utilise un bean:message (à partir d'un tag donc) pour afficher un '<'
    Dans ApplicationProperties.ressource, j'ai défini un tag chevron.inferieur.
    J'ai essayé de mettre comme valeur de ce tag < et &lt; mais dans le premier cas, j'ai une erreur (genre balise ouvrante mais aucune fermante) et le second conserve le code dans la page
    Voilà donc comment faire pour afficher un chevron dans un bean:message

    Merci d'avance pour votre aide

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    1.
    La méthode validate() que tu as déclarée dans ton formulaire n'est jamais appelée.
    La méthode validate() est appelée par Struts si dans le struts-config.xml, à l'action sur laquelle tu veux faire le contrôle de surface, l'attribut validate est positionnée à true.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <action
        input="/partieCommune/wap/connexionJeu.jsp"
        name="ValiderConnexionActionForm"
        path="/login"
        scope="session"
    type="com.opensugar.wapgames.partiecommune.utilisateur.controleur.ValiderConnexionAction"
        validate="true"
    >
    En cas d'erreurs, struts se redirige vers l'action ou la jsp spécifié dans l'attribut input.

    Sinon, c'est à toi d'appeler manuellement dans ton Action la méthode validate() sur le formulaire et de gérer les cas d'erreurs.

    2. Si tu n'utilises pas la propriété Filter, est-ce que ça fonctionne?

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut
    Merci mattheox pour ta réponse

    Néanmoins, la méthode validate était bien appelée (sans le validate="tru", j'avais mis des debug histoire de voir comment ça fonctionnait et les lignes de debug étaient bien affichées). J'ai testé ta solution, aucun changement malheureusement

    Je n'utilise pas la propriété filter pour afficher le tag (j'ai essayé et j'ai droit à une erreur du TLD, car le filter ne peut pas être utilisé dans un bean:message)

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut
    Personne ne voit comment résoudre mon problème ???

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

Discussions similaires

  1. [Encodage] Formulaire html local (sans php) problème d'encodage des caractères
    Par DubeiserTM dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 01/06/2011, 10h34
  2. Encodage de caractères dans un mail au format HTML
    Par loulag07 dans le forum VBScript
    Réponses: 3
    Dernier message: 26/04/2011, 12h22
  3. [FLASH 8] Encodage de caractères...
    Par Xdrei dans le forum Flash
    Réponses: 1
    Dernier message: 24/02/2006, 07h44
  4. encodage de caractères
    Par hugo123 dans le forum Langage
    Réponses: 7
    Dernier message: 25/01/2006, 15h04
  5. [Struts]<html:errors/> request
    Par Eydoll dans le forum Struts 1
    Réponses: 5
    Dernier message: 28/07/2004, 14h14

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