2010-11-22 1 views
0

J'appelle une fonction "foo.action? Request_locale = en" sur mon formulaire. Il y a une validation de xwork sur cette page et je m'attends à recevoir une erreur de validation dans la langue donnée. Ce que je reçois est une page en finnois - la langue par défaut de mon navigateur - et je m'attendais à une en anglais.Struts 2 appel d'action perd le paramètre de langue xwork i18n

Comment est-il possible de changer la langue utilisée sur une page jsp (d'où provient le request_locale) afin que l'action appelée de mon formulaire apparaisse avec la langue sélectionnée et non celle par défaut du navigateur?

Quelques spécifications: struts.xml a une ligne parce que mes actions sont à fi.foo.action annuaire et des ressources i18n à fi/foo/package_en.properties et ces fichiers.

Les validateurs sont de type barAction-foo-validation.xml dans le dossier fi.foo.action.

fi = finnois

Mon application, fonctionne bien, mais ce paramètre de langue donne mauvaise langue à l'écran.

Répondre

1

Il semble que l'intercepteur i18n ne soit pas configuré pour la pile d'intercepteurs de votre action. L'intercepteur i18n est défini quatrième dans le defaultStack. Assurez-vous de ne pas surcharger la pile pour votre action. S'il semble être configuré, essayez de définir un point d'arrêt dans la méthode intercept du I18nInterceptor pour confirmer qu'il est appelé. Sinon, ce que vous avez devrait fonctionner.

+0

Je n'avais aucune config d'intercepteur. Maintenant, j'ai ajouté un et tout fonctionne maintenant. Merci Steven! – mico

+0

Maintenant, j'ai com.opensymphony.xwork2.interceptor.I18nInterceptor et com.opensymphony.xwork2.validator.ValidationInterceptor. Cela fonctionne bien quand j'ai des erreurs de champs provenant de la validation de fooAction-bar-validation. J'ai aussi une validation d'action et cela a semblé surcharger les autres validations de sorte que chaque message de validation est montré quand l'action atterrit avec le résultat "input" et que fielderror est ouvert sur une ligne. Quel intercepteur résoudrait le problème? Il y en a tellement et je ne sais pas par où commencer. – mico

+0

Problème résolu: j'ai ajouté un intercepteur «params». Il conserve les erreurs de champ lorsqu'il est posé sur une page d'erreur. – mico