struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nenad Kovacevic" <>
Subject JSTL fmt:message and Struts 2 Tags Handling of MessageProperties
Date Tue, 23 Nov 2010 19:10:45 GMT
I am using both JSTL (reference implementation of 1.2 spec) and struts
2.2.1 in my Web application, and I am noting incompatibilities in the
way JSTL's fmt:message tag and corresponding Struts tags handle i18n. I
have all i18n messages in MessageResources_<locale>.property files. Both
JSTL fmt tags and struts tags use these resource bundles when formatting

JSTL fmt:message behaviour is to put a string from the
MessageResources_*.property through MessageFormat only if the
fmt:message tag contains a fmt:param element. In that case the message
from the bundle needs to follow MessageFormat syntax (e.g. treat
apostrophe or single quote character as an escape character). 

Otherwise if fmt:message does not have a fmt:param it simply prints out
non-modified message from the bundle to the JspWriter. This means that I
need to escape special characters (like apostrophe and curly braces)
ONLY if the message is parameterized.


Implementation of struts tags and ActionSupport#getText methods on the
other side always uses MessageFormat regardless of whether the message
is parameterized or not, and I always have to escape MessageFormat
special characters. 


To illustrate this here is an example:

test.message1 = How are you doin' friend?

test.message2 = How are you doin'' friend?

test.message3 = How are you doin' {0}?

test.message4 = How are you doin'' {0}?


and test.jsp:


<fmt:message key="test.message1"/><br>

<fmt:message key="test.message2"/><br>





<s:text name="test.message1"></s:text><br>

<s:text name="test.message2"></s:text><br>

<s:text name="test.message3"><s:param>Joey</s:param></s:text><br>

<s:text name="test.message4"><s:param>Joey</s:param></s:text><br>


then this is what I would get on my page:


How are you doin' friend?
How are you doin'' friend?
How are you doin {0}?
How are you doin' Joey?

How are you doin friend?
How are you doin' friend?
How are you doin {0}?
How are you doin' Joey?


This makes it impossible to reuse the messages from both libraries (e.g.
test.message1 from the example above). 

Is there a way to configure or customize Struts to treat i18n strings
from resource bundles the same way JSTL treats them? Any help would be




  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message