On 8/23/06, O'Shea, Sean <Sean.O'[EMAIL PROTECTED]> wrote:
Hi all,
I'm using struts 1.2.9 and I'm having some trouble with resource
bundles. My JSP looks like this:
<%@ include file="../taglibs.jsp" %>
<logic:messagesPresent>
<h3 class="red"><bean:message key="errors.header"
bundle="otherBundle"/></h3>
<bean:message key="errors.subheader" bundle="otherBundle" />
<ul>
<html:messages id="error">
<li><bean:write name="error"
bundle="otherBundle" /></li>
</html:messages>
</ul>
<hr>
</logic:messagesPresent>
I'm plugging my resources into my struts-config.xml like this:
<message-resources parameter="resources.ApplicationResources"
null="false"/>
<message-resources key="otherBundle" parameter="resources.OtherBundle"
null="false"/>
Both the bean:message messages get outputted as expected. This means
that the otherBundle resources are definitely registered with the
application.
However, the bean:write message does not get outputted as expected - I
get a ??? errors.foo.bar ??? message on the JSP
Its the <html:messages> tag that is converting the keys in your error
messages into the text - <bean:write> is just accessing the page scope
variable that the text has been stored under and writing it out. The
bundle attribute for <bean:write> is for use with the "formatKey"
attribute.
You need to specify the bundle on the <html:messages> tag:
<html:messages id="error" bundle="otherBundle">
<li><bean:write name="error" /></li>
</html:messages>
Niall
I've debugged the tag libraries and I think both bean:message and
bean:write call the org.apache.struts.taglib.TagUtils.message method
detailed below:
public String message(
PageContext pageContext,
String bundle,
String locale,
String key,
Object args[])
throws JspException {
MessageResources resources =
retrieveMessageResources(pageContext, bundle, false);
Locale userLocale = getUserLocale(pageContext, locale);
String message = null;
if (args == null) {
message = resources.getMessage(userLocale, key);
} else {
message = resources.getMessage(userLocale, key, args);
}
if ((message == null) && log.isDebugEnabled()) {
// log missing key to ease debugging
log.debug(resources.getMessage("message.resources", key,
bundle, locale));
}
return message;
}
When the bean:message tag is calling this method, the bundle parameter
has a value of 'otherBundle'.
However, when the bean:write tag calls this method the bundle parameter
is null - hence the ??? errors.foo.bar ??? message in my JSP.
Can someone offer advice on this issue? Do I have my JSP and
struts-config.xml configured correctly?
Any help would be greatly appreciated
Thanks
Sean
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]