Graal: Comment accéder à l'i18n de contrôleur ou d'un service?
J'ai fait ce contrôleur, qui doit être utilisé pour envoyer des e-mails. J'ai besoin d'accéder i18n
pour envoyer localisée e-mails.
class MailController {
MessageSource messageSource
static transactional = false
public void sendEmail() {
String name = "some name..."
String subject = message(code:"somemessagekey", args:[name])
//do some fancy stuff here...
}
}
Il est le i18n
fichier (situé dans i18n
dossier):
file name: messages.properties
content: somemessagekey = Blabla {0} - blablabla
Après je l'exécute, il le jette (dans un test d'intégration):
groovy.lang.MissingPropertyException: Aucun propriété: messageSource
pour la classe: org.codehaus.groovy.graal.de soutien.MockApplicationContext
Je suis à court d'idées comment gérer que la localisation dans le contrôleur (j'ai aussi essayé dans un service, mais c'est encore plus compliqué).
- n'avez-vous pas besoin d'appeler g.message() ?
- Pourquoi devrais-je le faire? Je n'ai trouvé aucune info à propos de "g".
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez graal 1.3.7, vous devez déclarer la source d'un message comme :
De cette façon, il sera injecté dans votre contrôleur. Je pense que dans la version 2.0, vous pouvez le faire de la manière que vous avez posté, mais même alors, je pense qu'il vaut la peine d'essayer de le déclarer comme indiqué ci-dessus.
def messageSource public void sendEmail() { String subject = message(code:"somemessagekey", args:[name]) ...
Je sais il n'y est une réponse, mais voici mon point de vue à elle. J'ai fait un service (inspiré par d'autres)
Maintenant, dans un service juste injecter i18nService et vous êtes bon pour aller! Cela rend également les tests unitaires de l'autre un jeu d'enfant que vous pouvez vous moquer de la i18nService
Comme un bonus, le service va tenter de trouver les paramètres régionaux en cours pour le courant webrequest, prises pour que le service s'exécute dans un webrequest contexte.
Dans Graal 2.2.3 cela devrait fonctionner:
Lien de référence et plus de possibilités ici: http://static.springsource.org/spring/docs/2.0.8/api/org/springframework/context/MessageSource.html
Réponse ci-dessus ne m'aide pas.
Je suis à l'aide de Graal 3.0.1 et la solution ci-dessous a été utile pour moi
La voie officielle est en fait assez facile. La documentation officielle les états suivants:
Aussi, veuillez noter de ne pas fournir d'arguments lors de votre traduction n'utilise pas d'arguments:
Je suis en utilisant graal 3.x.Injecté
messageSource
et utilisé
cette méthode.Modifier votre code pour
J'ai essayé le code ci-dessous et de son travail à l'aide de Titulaires.