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.
InformationsquelleAutor Todd Owen | 2009-08-18