Rechercher : dans
Par :

[Struts]<html:errors />

Dernière réponse le 15 déc 2008 à 17:00:28 Rom1984, le 11 avr 2007 à 14:58:54 
 Signaler ce message aux modérateurs

Bonjour,
Je suis actuellement sur un projet consistant à compléter et améliorer un jeu accessible depuis le WAP.
Le projet avait débuté l'an dernier avec une autre équipe, et donc le reprendre est un peu chaud étant donné que je n'ai que très peu touché aux technologies utilisées et donc la moindre erreur/bug venant de tests ou d'erreurs de l'ancienne équipe est un vrai casse-tête !
Cette application utilise le framework struts et genère donc des pages WML.

Mon souci provient de la balise <html:errors /> et des traitements qui se situent derrière celle-ci. En effet, j'arrive sur une page avec un formulaire. Je rentre des informations fausses et je valide. Le problème est que les messages d'erreurs ne sont pas affichés (pire, ils provoquent des messages d'erreurs sur les postes du réseau voulant aller sur cette page).

Voilà un extrait de struts-config.xml (définissant l'action form et l'action pour le formulaire de la page concernée):

        <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.boite.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>


Dans connexionJeu.jsp (la page contenant le formulaire):
<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:
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) {
            errors.add("connexionNameEmpty", new ActionMessage(
                    "validerConnexion.error.name.required"));
            
        }
        if (getPassword() == null || getPassword().length() < 1) {
            errors.add("connexionPasswordEmpty", new ActionMessage(
                    "validerConnexion.error.password.required"));
            
        }
        return errors;
    }


Méthode execute de l'Action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        ValiderConnexionActionForm validerConnexionAdminActionForm =
                (ValiderConnexionActionForm) form;
        
        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

J'ai aussi tenté avec un simple <html:errors /> à la place des cinq lignes d'erreurs dans la jsp situé en dehors du formulaire mais rien n'y fait ...!!!

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

Merci d'avance pour votre aide
Configuration: Windows XP
Firefox 2.0.0.3

Meilleures réponses pour « [Struts] » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[Aspirateur de pages HTML] Comment aspirer un site Web ? VoirHTTrack est un excellent aspirateur, gratuit en licence GNU GPL (libre). HTTrack permet de télécharger un site web d'Internet vers votre disque dur, en construisant récursivement tous les répertoires, récupérant html, images et fichiers du serveur...
CMOS CHECKSUM ERROR - DEFAULT LOADED VoirAu démarrage votre ordinateur affiche l'une des phrase suivantes : CMOS wrong CMOS MEMORY size WRONG CMOS Checksum Bad CMOS checksum error defaults loaded Warning! CPU has been changed please re-enter cpu settings in the cmos setup and...
Télécharger HTML Tidy VoirHTML Tidy est un utilitaire permettant de vérifier et d'optimiser tout code HTML. La version originale de cet utilitaire s'utilise en mode de commande uniquement. La présente version, appelée "GUI Tidy", possède une interface graphique. Notez...
Télécharger HTML Tidy fr VoirHTML Tidy est un utilitaire permettant de vérifier et d'optimiser tout code HTML. Cette version est la version 1.1.5.0, c'est-à-dire la version de base ! Ayant remarqué que les débutants avaient des problèmes dans l'utilisation de la version...
Caractères spéciaux HTML VoirCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour...
Les balises HTML VoirHTML, un langage à balises Le HTML n'est pas un langage de programmation. Il s'agit d'un langage permettant de décrire la mise en page et la forme d'un contenu rédigé en texte simple. Une page HTML est ainsi un simple fichier texte...
Introduction au HTML VoirPrésentation du HTML Le HTML (« HyperText Mark-Up Language ») est un langage dit de « marquage » (de « structuration » ou de « balisage ») dont le rôle est de formaliser l'écriture d'un document avec des balises de formatage. Les balises permettent...

1

 benoit supinfo, le 15 déc 2008 à 17:00:28

Je pense qu'il te manque la balise input dans ton struts-config.xml

Répondre à benoit supinfo
Collection CommentÇaMarche.net