J'ai implémenté un ActionMapper personnalisé qui obtient les paramètres régionaux à partir de l'URI (l'URI lui-même, pas les paramètres de la requête). Depuis ActionMapper.getMapping(), comment définir les paramètres régionaux pour l'action en cours?Comment définir les paramètres régionaux dans un Struts personnalisé 2 ActionMapper
Voici quelques idées que j'ai pris en compte:.
- ActionContext.getCurrent() setLocale(). Malheureusement, il semble qu'un nouveau ActionContext nouveau soit créé lorsque l'action est appelée, et les paramètres régionaux sont réinitialisés à leur valeur par défaut.
- Définissez le paramètre request_locale, qui sera traité par l'intercepteur i18n. Malheureusement, l'intercepteur i18n insiste sur la définition des paramètres régionaux non seulement pour l'action en cours, mais également pour la session en cours, ce qui génère une exception car les sessions ne sont pas activées pour mon application.
- Définissez un paramètre et traitez-le dans l'action elle-même, en implémentant setLocale(). Simple, mais cela signifie qu'aucun des intercepteurs n'aura accès aux paramètres régionaux.
- Définissez un paramètre et écrivez un intercepteur (pour faire essentiellement la même chose que l'intercepteur i18n sans assumer le support de la session). On dirait que c'est trop simple pour un problème aussi simple, sans parler de réinventer la roue.
Existe-t-il un moyen simple d'y parvenir?
Si vous avez besoin des paramètres régionaux tout au long de vos intercepteurs, je pense que vous êtes coincé réinventer la roue avec un intercepteur i18n personnalisé. Je suis surpris que l'ActionContext soit recréé - je pensais que votre première idée aurait aussi fonctionné. – Pat