web-dev-qa-db-fra.com

JSTL Core fmt: message Tag Dynamic message using bundle / properties file

Je comprends l'utilisation de la norme fmt:message Tag c'est-à-dire que nous définissons quelque chose comme ça dans le JSP:

<fmt:setBundle basename="ResourceBundles.ValidationErrorMessages" var="errorMessages" />
<fmt:message key="${error.value}" bundle="${errorMessages}" />

Supposons que error.Value = "MQ2009"

Mon fichier de propriétés nommé "ValidationErrorMessages" a l'entrée suivante

MQ2009 = MQ time out

Maintenant, mon exigence est d'avoir quelque chose comme

MQ2009 = Mq timeout happened for message {messagename}.

Puis-je définir la variable messagename dynamiquement? C'est-à-dire lors de l'exécution, messagename sera disponible dans la portée de la demande et devrait être remplacé dans le fichier de propriétés.

Comment puis-je faire ceci? Ai-je besoin d'une balise personnalisée ou Java EE fournit cette fonctionnalité que je ne connais pas?

19
Metalhead

Vous pouvez définir des propriétés comme

MQ2009 = Mq timeout happened for {0}

puis

<fmt:message key="MQ2009" var="val" >
   <fmt:param value="${valueComingFromSomeParameter}"/>
</fmt:message>

puis

<c:out value="${val}"/>
36
Jigar Joshi

Dans votre fichier de propriétés

MQ2009 = Mq timeout happened for message {0}

Ensuite, vous pouvez imbriquer un <fmt:param value="${messagename}"/> balise avec <fmt:message tag, où messagename est dans la portée de la demande.

4
Bhesh Gurung