2012-10-16 4 views
17

rozumiem użycie standardowej fmt:message Tag czyli określamy coś takiego w JSP:JSTL rdzenia fmt: message Tag Dynamiczny wiadomość za pomocą wiązki/właściwości pliku

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

Załóżmy error.Value = "MQ2009"

Moi właściwości pliku o nazwie „ValidationErrorMessages” ma następującą pozycję

MQ2009 = MQ time out 

teraz mój wymóg jest mieć coś podobnego

MQ2009 = Mq timeout happened for message {messagename}. 

Czy mogę dynamicznie definiować zmienną messagename? Np. W czasie wykonywania, messagename będzie dostępny w zasięgu żądania i powinien zostać zastąpiony w pliku właściwości.

Jak mogę to zrobić? Czy potrzebuję niestandardowego tagu, czy Java EE udostępnia tę funkcję, której nie jestem świadomy?

Odpowiedz

33

Można zdefiniować właściwości jak

MQ2009 = Mq timeout happened for {0} 

a następnie

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

a następnie

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

Nie musisz używać 'c: out'. Komunikat z parametrem zostanie wyświetlony w lokalizacji 'fmt: message', jeśli tylko usuniesz partycję' var = "val" '. Znacznie wygodniejsze niż użycie dodatkowego znacznika c: out. – Gas

+0

c: out ma sens w połączeniu z escapeXml = "true" – Patrick

3

W złożyć właściwości

MQ2009 = Mq timeout happened for message {0} 

Następnie można zagnieździć znacznik <fmt:param value="${messagename}"/> z tagiem <fmt:message, gdzie messagename znajduje się w zasięgu żądania.