Comment définir les paramètres régionaux dans une coutume Struts 2 ActionMapper
J'ai mis en œuvre un custom ActionMapper qui obtient les paramètres régionaux à partir de l'URI (URI en lui-même, et non pas des paramètres de la requête). De l'intérieur ActionMapper.getMapping(), comment puis-je configurer les paramètres régionaux de l'action en cours?
Voici quelques idées que j'ai vu:
- ActionContext.getCurrent().setLocale(). Malheureusement, il semble qu'une nouvelle ActionContext est créé lorsque l'action est invoqué, et le paramètre est réinitialisé à la valeur par défaut.
- Régler le paramètre request_locale, qui sera traitée par l'i18n intercepteur. Malheureusement, l'i18n intercepteur insiste sur le réglage des paramètres régionaux pour non seulement l'action en cours, mais la session en cours, ce qui déclenche une exception car les sessions ne sont pas activés pour mon application.
- Définir un paramètre de processus et dans l'action elle-même, par la mise en œuvre de la fonction setLocale(). Simple, mais elle signifie qu'aucun des intercepteurs aurez accès aux paramètres régionaux.
- Définir un paramètre et d'écrire un intercepteur (en gros de faire la même chose que l'i18n intercepteur sans assumer la prise en charge de session). Semble exagéré pour une simple question, sans parler de ré-inventer la roue.
Est-il un moyen simple d'atteindre cet objectif?
- Si vous avez besoin de la locale tout au long de votre intercepteurs, je pense que vous êtes coincé à ré-inventer la roue avec une coutume i18n intercepteur. Je suis surpris que le ActionContext soit recréé - j'ai pensé que votre première idée serait avez travaillé trop.
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser le I18nInterceptor lorsque vous définissez le paramètre:
request_only_locale
au lieu de
request_locale
request_only_locale stocke les paramètres régionaux que pour les demandes et ne touche pas la Session.
Cheers,
Christian
Je n'ai en effet finir par un paramètre "locale", et la réécriture de l'i18n intercepteur de l'utiliser.
Depuis Struts 2.1.1, les paramètres de la ActionMapping sont séparés des paramètres de la requête. Le actionMappingParams intercepteur prend ces paramètres et les applique à l'action de l'objet. Cependant, je voulais que mon i18n intercepteur de consommer de la "locale", les paramètres et les pas passer à l'action, Voici comment je l'ai fait:
Cette coutume i18n intercepteur doit venir avant actionMappingParams dans l'intercepteur de la pile.