2012-10-16 9 views
17

Capisco l'utilizzo dello standard fmt:message Tag cioè si definisce qualcosa di simile nel JSP:JSTL Nucleo fmt: messaggio variabile di segnalazione dinamica con fascio/file di proprietà

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

Supponiamo error.Value = "MQ2009"

miei annunci file denominato "ValidationErrorMessages" ha seguente voce

MQ2009 = MQ time out 

Ora il mio requisito è avere qualcosa di simile

MQ2009 = Mq timeout happened for message {messagename}. 

Posso definire la variabile messagename in modo dinamico? I.e in fase di esecuzione, messagename sarà disponibile in ambito di richiesta e dovrebbe essere sostituito nel file delle proprietà.

Come posso fare questo? Ho bisogno di un tag personalizzato o Java EE fornisce questa funzione che non conosco?

risposta

33

È possibile definire le proprietà come

MQ2009 = Mq timeout happened for {0} 

e poi

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

e poi

<c:out value="${val}"/> 
+6

Non è necessario utilizzare 'c: out'. Il messaggio con parametro verrà visualizzato nella posizione 'fmt: message', se rimuovi solo' var = "val" 'part. Molto più conveniente rispetto all'utilizzo di ulteriori tag c: out. – Gas

+0

c: out ha senso in combinazione con escapeXml = "true" – Patrick

3

In te file di proprietà

MQ2009 = Mq timeout happened for message {0} 

Quindi è possibile nidificare un tag <fmt:param value="${messagename}"/> con tag <fmt:message, dove messagename è in ambito di richiesta.

Problemi correlati