Lire la ressource faisceau de propriétés d'un bean géré
À l'aide de <resource-bundle>
fichiers, je suis capable d'avoir i18n texte dans mes pages JSF.
Mais est-il possible d'accéder à ces mêmes propriétés dans mon managed bean afin que je puisse régler les visages des messages avec i18n valeurs?
OriginalL'auteur Matthieu Riegler | 2012-12-01
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez configuré comme suit:
Si votre bean est la portée de la requête, il vous suffit d'injecter de l'
<resource-bundle>
comme@ManagedProperty
par son<var>
:Ou si vous avez seulement besoin d'une clé spécifique:
Si votre bean est cependant une portée plus large, puis d'évaluer les
#{text}
par programme dans la méthode locale:Ou si vous avez seulement besoin de quelques clés spécifiques:
Vous pouvez même obtenir par la norme
ResourceBundle
API de la même façon que JSF lui-même est déjà sous les couvertures, vous auriez juste besoin de répéter le nom de base dans le code:Ou si vous êtes à la gestion des haricots en CDI au lieu de JSF, alors vous pouvez créer un
@Producer
:Et de l'injecter comme ci-dessous:
Alternativement, si vous êtes à l'aide de la
Messages
classe de la JSF bibliothèque utilitaire OmniFaces, alors vous pouvez simplement mettre son résolveur une fois à tous lesMessage
méthodes utiliser le bundle.Voir aussi l'exemple dans le javadoc et la page vitrine.
If your bean is request scoped
est que le seul champ d'application qui peuvent accéder à la propperties fichier?JSF
@ManagedProperty
n'est pas capable d'injecter un champ d'application plus restreint dans un champ d'application plus large. Seulement CDI@Inject
est. Si vous arrive d'utiliser le CDI, la tête à stackoverflow.com/q/28045667qui forme de la syntaxe doit être utilisé lors de l'écriture d'un texte avec des paramètres dans ressources fichier de regroupement?
il suffit de passer au bundle de valeur (pas touche!) pour
MessageFormat#format()
.@ManagedProperty("#{text}")
travaille également dans@ViewScoped
et@FlowScoped
haricots.OriginalL'auteur BalusC
Une autre possibilité:
faces-config.xml
YourBean.java
OriginalL'auteur Benny Neugebauer
Voici une solution que j'utilise, pas si simple, mais au moins de travail :
De première classe :
Deuxième classe :
Après vous avez besoin de remplacer BUNDLE_LIST avec vos fichiers de propriétés. Une fois cela fait, l'utiliser comme ça :
Si vous avez des questions, n'hésitez pas!
EDIT :
Vous devez également déclarer l'MessageInterpolator
META-INF/validation.xml
OriginalL'auteur Alexandre Lavoie