override JSF2 ResourceBundleLoader?
-
02-10-2019 - |
Question
Je dois avoir des messages de ressources qui contiennent des expressions EL résoudre lors du chargement d'un ResourceBundle. Fondamentalement, j'ai un certain nombre de fichiers de propriétés contenant le texte. Une partie du texte ressemblera ce qui suit:
welcomeText = Bienvenue # {} userbean.name
La seule façon possible, je peux voir ce travail est actuellement mise en œuvre d'un taglib personnalisé de sorte qu'au lieu de dire:
<f:loadBundle var="messages" basename="application.messages"/>
Je dois utiliser
<mytaglib:loadBundle var="messages" basename="application.messages"/>
#{messages.welcomeText}
Étant donné un utilisateur avec le nom d'utilisateur "User1", cette sortie devrait
Welcome User1
Ma mise en œuvre serait alors utiliser une classe ResourceBundle personnalisée qui aurait préséance sur handleGetObject, utilisez le ELResolver pour résoudre les variables etc .... Des idées? suggestings? Implémentations qui sont déjà disponibles?
Je vous remercie de votre aide.
La solution
Au lieu de faire usage de <h:outputFormat>
et <f:param>
pour afficher du texte paramétrés. Il est soutenu par le MessageFormat
API , la mêmes règles que celles décrites dans le Javadoc de l'API seront appliquées.
par exemple.
welcomeText=Welcome {0}
avec
<h:outputFormat value="#{messages.welcomeText}">
<f:param value="#{userbean.name}" />
</h:outputFormat>
Il est pour:)