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 :

[STRUTS] avoir des pages d'erreur differente


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut [STRUTS] avoir des pages d'erreur differente
    Salut,

    J'ai codé une classe Action qui hérite de DispatchAction car plusieurs operations sont possibles depuis une meme page.

    Mais j'aurais besoin d'avoir des pages d'erreurs differentes suivant les cas.

    Ma methode validatie du form verifie les données et construite un ActionError si besoin.

    Mais je voudrai avoir une sortie de message d'err differente selon les cas.. est-ce possible de mettre au point un tel mecanisme depuis le struts-config.xml ??


    Merci

  2. #2
    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 chacune des méthodes de ton Action héritant de DispatchAction, tu peux faire appel à la validation du formulaire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActionMessages errors = form.validate(mapping,request);
    Ensuite, en iterant sur errors, tu dois pouvoir tester si les messages d'erreurs que tu récupères correspondent à ceux que tu attends dans chacune des méthodes, via peut-être un get("codeMessageErreurN").
    Et après, tu dois pouvoir sortir en dirigeant vers la bonne page d'erreur via un return mapping.findForward("erreurN").

    Il faut évidemment avoir défini au préalable dans ton struts-config, dans l'Action en question, plusieurs tags forward de path erreur1,erreur2,...

    C'est une idée mais je ne sais pas du tout si c'est réalisable, si j'ai bien compris ce que tu voulais faire et si c'est assez clair...
    Y a peut-être un mécanisme standard pour ça mais je ne connais pas.

    Peut-être qu'avec quelques petits bouts de ton code, ce serait plus facile de montrer comment l'appliquer.

  3. #3
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut
    alors.. je vais essayer d'etre plus clair. =)

    donc, voila mon struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      <action path="/NewsArea"
    	type="atchik.app.chat.ato.itf.web.std.action.NewsAreaAction"
    	name="newsArea"
    	scope="request"
    	validate="true"
    	parameter="kindOfReply"
    	input="/jsp/web/std/news_add.jsp"
    	>
    	<forward name="displayNews" path="/jsp/web/std/news.jsp"/>
    	<forward name="addNews" path="/jsp/web/std/news_add.jsp"/>
    	<forward name="alterNews" path="/jsp/web/std/news_add.jsp"/>
    	<forward name="archivedNews" path="/jsp/web/std/news_archives.jsp"/>
      </action>
    avec mon validate = true, la methode de validation est toujours appelée, la n'est pas le pb.

    Par contre, toutes mes erreurs sont redirigées vaer ma page 'input'.. ce qui est normale..
    Simplement, je voudrai que l'input soit la page de formulaire en cours.. et comme ma classe action traite avec plusieurs formulaires...

  4. #4
    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
    Ah pardon, j'ai oublié de préciser que ce que j'ai expliqué n'est valable qu'en codant un validate="false".

    Si tu codes un validate="true", tu seras en effet automatiquement redirigé vers la page référencée dans l'input.

    Je pense sincèrement qu'en codant un validate="false", en faisant appel à la validation du formulaire directement dans chacune des méthodes de ta DispatchAction,en testant le type de message d'erreurs et en déclarant plusieurs tags forward pour chaque type d'erreurs comme je te l'ai indiqué, ça peut fonctionner.

    Mais bon, j'peux me tromper et il y a peut-être plus simple mais ça vaut peut-être le coup d'essayer.

  5. #5
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut
    héhé, ca fonctionne sauf que je ne sais pas comment faire passer mon ActionMessage..

    Je retourne le template désiré en fonction du retour de validate.. mais.. mon template s'affiche sans les messwages d'err !!

  6. #6
    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
    Pardon une fois de plus.
    J'ai oublié de préciser qu'il faut faire un saveErrors pour récupérer les messages comme ceci :
    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.findForward("erreur1") ;
    }
    Et si tu veux dans un cas particulier, aller vers la page référencée par l'input plutôt que vers une page identifiée par un forward, tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return mapping.getInputForward() ;

  7. #7
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut
    yess
    merci bcp du tuyau ca roule

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

Discussions similaires

  1. Personnalisation des pages d'erreurs
    Par maya dans le forum Apache
    Réponses: 2
    Dernier message: 17/12/2006, 22h54
  2. Personnalisation des pages d'erreur Apache
    Par bat dans le forum Apache
    Réponses: 6
    Dernier message: 07/11/2005, 16h46
  3. Comment avoir des pages Web cryptées ?
    Par k_boy dans le forum Sécurité
    Réponses: 6
    Dernier message: 03/10/2005, 19h46

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