2010-02-23 6 views
0

J'ai une application Struts 1 utilisant l'internationalisation Struts standard, avec un fichier de propriétés et tout. J'ai besoin de changer un message spécifique pour seulement un groupe choisi d'utilisateurs, ainsi je veux prolonger PropertyMessageResources. Cependant, je ne peux pas trouver un moyen de connecter la demande actuelle (pour que je sache si c'est un de ces utilisateurs sélectionnés) à la recherche de message.Substitution de PropertyMessageResources dans struts 1, connexion à la requête

1) Existe-t-il un meilleur moyen d'obtenir cette fonctionnalité? J'ai pensé mettre la logique dans les jsp, mais cela n'obtient pas certaines situations, comme les messages obtenus par le validateur.

2) Est-il possible de connecter la requête aux différentes méthodes getMessage() de mon objet PropertyMessageResources étendu?

Répondre

-1

Voici ce que je fini par faire:

  • Dans le script de connexion, vérifiez si elle est l'un des utilisateurs de sélectionner et ajouter une chaîne spéciale à la partie variante de leur région, et le mettre dans la session comme leur locale.

    request.getSession(true).setAttribute("org.apache.struts.action.LOCALE", new Locale(locale.getLanguage(), locale.getCountry(), customVariant); 
    
  • Dans la classe surchargée de PropertyMessageResources, dans la méthode getMessage (Locale, String), il suffit de vérifier les paramètres régionaux passé pour voir si elle a la variante spéciale. J'ai fait toutes mes variantes personnalisées avec un "_", et je vérifie le premier caractère de la variante avant de la rechercher (pour ne pas ralentir les autres utilisateurs).

Si quelqu'un a une meilleure solution, postez-la.