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 2 Java Discussion :

probleme de radio button avec localization


Sujet :

Struts 2 Java

  1. #1
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut probleme de radio button avec localization
    J'ai besoin de creer des radio bouttons avec une valeur differente dans la clé et la valeur.
    Jusque la pas de probleme avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:radio List="#{'alpha':'alphanumerique','num':'numerique'}" ></s:radio>
    Le problème est que je voudrais remplacer la chaine alphanumerique dans cette liste par une clé.
    Du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="%{getText('alphanumerique')}
    Qu'elqun aurait'il un avis?

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    ca ca marche pour moi en tout cas

    <s:select name="edit1" list="{getText('viewMode.text1'), getText('viewMode.text2'), getText('viewMode.text3')}" emptyOption="false" />

  3. #3
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut
    oui, mais comme ça on récupère la valeur de la traduction.Mais je voudrais la valeur cachée.Il faudrait une liste clé valeur.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    tu n est pas tres clair.

    Mais bon si j ai bien compris tu ne veux pas declarer ta liste dans ta JSP? mais plutot recupérer une liste depuis ta classe action je suppose?

    Pour cela tu n as qu'a creer une liste dans ton action qui contiendra les bonnes valeurs selon la locale. Tu peux utiliser la methode getText et utiliser des clés comme bon te semble si ton action herite de ActionSupport.

  5. #5
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut
    Je ne veux pas passer par une action. Si je fais ça, apres la validation xml ne retourne pas les erreurs.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    Si tu veux de l'aide, soit plus précis s'il te plait.
    Que veux tu faire exactement?

    Pourquoi dis tu que passer par une action empechera l'affichage d'erreur ou de faire de la validation?

  7. #7
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut
    Désolé de ne pas avoir été precis.
    Je ne connais pas encore tres bien struts.
    Je vais essayer de me faire comprendre.
    Selon ce que j'ai testé, quand la page est validée et posséde des erreurs elle prend le result input qui directionne vers un jsp et pas une action.
    Parceque si c'est action je ne récupère pas les erreurs dans la jsp.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action name="save" class="be.save">
    <result name="input" >/users/save.jsp</result>
    <result>/users/newBulk.jsp</result></action>
    c'est pour ça que je voulais faire la liste des boutons radio dans la jsp.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    ok, je vois.

    Je peux te proposer une solution, je ne sais pas si c'est la meilleure car comme tout le monde ici, cela ne fait pas tres longtemps que je code en struts2.

    Dans ma solution, tu as une classe java, qui est utilisé pour lancer une page de type formulaire mais est aussi utilisé pour gérer la sauvegarde (ou submit) du formulaire. Donc on a une classe java pour deux action Struts2, une action input (pas le resultat! qui sert a charger le formulaire) et une action save (qui va recuperer les valeurs saisies dan le formulaire pour effectuer diverses manipulation metiers qui ne nous concernent pas ici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <action name="input" method="input" class="be.save">
    <result name="success">/users/save.jsp</result></action>
     
    <action name="save" method="save" class="be.save">
    <result name="input" >/users/save.jsp</result>
    <result name="success">/users/newBulk.jsp</result></action>
    concretement lorsqu'un utilisateur rentre dans un navigateur l'url lancant l action input avec une url finissant par input.action, la classe dont l'identifiant est be.save est crée, des intercepteurs sont "lancés" et la methode input definit dans la classe action(qui herite de ActionSupport pour avoir de la validation) s'execute pour enfin envoyer comme vue la page formulaire.

    Lorsque l'on fait ensuite un submit(ou save selon le vocabulaire utilisé) on lance l'action save, qui lance les intercepteurs de validation et qui si il y a des erreurs, renvoie vers la page definie par le resultat input, et sinon la methode save s'execute, renvoie un string success et renvoie l'utilisateur vers la page adequate.

    Rentrons maintenant dans ce qui t interesse. Dans ta classe action, tu as normalement des attributs associés au champs de saisie de ton formulaire avec des methodes setters et getters.

    Si tu fais un constructeur comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public Action(){
    		//initialisation de la classe 
    		String temp;
    		temp=getText("color.red");
    		list1.add(temp);
    		temp=getText("color.blue");
    		list1.add(temp);
    		temp=getText("color.green");
    		list1.add(temp);	
    		radioListe=list1;
     
    	}
    associé avec la tag jsp suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:radio name="radio1" list="radioListe" />
    et paf te voila avec une liste internationalisée (bon il n'y a pas de couple clé, value mais bon tu peux faire un hashmap a la place...) et qui sera recupéré à chaque fois que la classe sera réutilisé. Bon il y a toujours le probleme du changement de locale en plein milieu d'un remplissage de formulaire, et il faudrait peut etre redefinir la liste dans une methode prepare ou quelque chose du genre.

    J espere t avoir aidé et ne pas t avoir noyé sous du blabla inutile.

  9. #9
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut
    Merci pour ta réponse longue et complete.
    Je ne sais pas s'il y a quelque chose qui ma échapé,
    mais en fait cette solution je l'avais éssayée.

    Elle fonctionne effectivement si le validateur ne rencontre pas d'érreurs.
    Mais en cas d'érreurs, la machine n'execute pas la méthode save ou input et donc plus de liste.
    Je pense qu'elle n'execute pas la classe be.save.
    Elle renvoi vers le fichier .jsp définit dans l'action type"input".
    La je me retrouve sans liste définie.
    Je ne sais pas si je fais une quelconque erreur de manipulation. Mais mon probleme perssiste.



  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    Il est normal que ta methode save ne s'execute pas lorsqu il y a des erreurs de validations.

    Il faut que tu revoie le cycle de vie d'une requête traitée par struts2.
    regarde le site officielle. Ce n est pas super organisé mais il y a toute les connaissances de bases necessaires. http://struts.apache.org/2.0.11.1/docs/big-picture.html

    Les intercepteurs sont des classes java, qui execute une methode validate, AVANT que s'execute la methode save de ton acgtion sturts2. Si ces intercepteurs de validation trouvent une erreur, alors la fonction save ne se lance pas et on va directement vers le resultat input.
    Mais la normalement grace aux setters et getters tu devrais avoir ta liste....
    c est etrange.
    Tu peux toujours faire en sorte que ton action implemente l interface Preparable, qui "active" un intercepteur de base qui lance pour toute les requetes quelque soit les resultats une methode prepare avant toute chose et dans cette methode tu peux redefinir tout objet.
    Mais cela ne devrait pas etre necessaire, verifie si tu n'as pas fait de faute de frappe.
    Si une liste est defini lors du chargement d'une page, elle est recuperé par la classe action associé qui a son tour devrait la renvoyer à la page résultat quelqu'elle soit.

  11. #11
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut
    Résolu avec l'intercepteur preparable.
    Il execute bien la methode remplit la liste et donc j'y ait bien acces.
    Merci Seraphon

  12. #12
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut
    ok

  13. #13
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Points : 69
    Points
    69
    Par défaut
    J'ai trouvé une solution differente à ce probleme pour qui par hazard en aurait besoin.
    Déclarer des variables avec les traductions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <s:text name="alpha" id="alpha"/>
                    <s:text name="num" id="num"/>
    et apres faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:radio List="#{'alpha':#alpha,'num':#num}" ></s:radio>

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

Discussions similaires

  1. Radio button avec chaine de caractères sur 2 lignes
    Par 65days dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 21/09/2009, 09h33
  2. Radio Button avec une function(afficher une image et du texte)
    Par HWICE dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/04/2008, 20h19
  3. Radio button avec struts
    Par lili2704 dans le forum Struts 1
    Réponses: 3
    Dernier message: 14/03/2007, 18h16
  4. Réponses: 5
    Dernier message: 01/03/2007, 19h08
  5. Probleme avec des Radio Button
    Par beb30 dans le forum MFC
    Réponses: 7
    Dernier message: 16/05/2006, 00h46

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