Hello,

I wanted to use the new <bean:write> format mechanism,
I specified my format strings in the message resources.
So far so good ... everything was fine, but when I changed the
user locale with Action.setLocale() nothing happend for
FLOAT_FORMAT_KEY.
The Problem is in
org.apache.struts.taglib.bean.WriteTag.formatValue(...)
after line 318.
Please watch my comment.

if (formatStr == null) {
   format = NumberFormat.getInstance(locale);
} else {
   try {
     //Here we don't use the user locale but the JVM default locale.
     format = new DecimalFormat(formatStr);
   } catch (IllegalArgumentException _e) {
     JspException e = new
       JspException(messages.getMessage("write.format", formatStr));
     RequestUtils.saveException(pageContext, e);
     throw e;
   }
}

I changed it to this, and it did work well.

if (formatStr == null) {
   format = NumberFormat.getInstance(locale);
} else {
   try {
     //here we use the user locale
     NumberFormat f = NumberFormat.getNumberInstance(locale);
     if (f instanceof DecimalFormat) {
       ((DecimalFormat) f).applyPattern(formatStr);
       format = f;
      } else {
        format = new DecimalFormat(formatStr);
      }
   } catch (IllegalArgumentException _e) {
     JspException e = new
       JspException(messages.getMessage("write.format", formatStr));
     RequestUtils.saveException(pageContext, e);
     throw e;
   }
}

Is this a Bug ??
Or am I missunderstanding something ?

Volker


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to