Das konkrete Problem ist: Der "input" läuft in beiden Fällen anscheinend korrekt in eine konvertierende Javaklasse/-Methode. "input" ist hier schlicht ein String-Parameter, der auch im Mozilla-Fall scheinbar korrekt ankommt (kompletter Betrag inklusive Leerzeichen). Anhand der locale "fr" wird ein DecimalFormat durchgeführt und das abschliessend Number n = f.parse... liefert halt bei Tests mit Mozilla Firefox mit obigem Beispiel "24" statt "24177.97". Via Internet Explorer klappt's wie gesagt, und der String-Parameter, der in der Konvertierungsmethode ankommt, scheint identisch.
Sind nur ein paar Code-Zeilen:
public Object parse(String input) // "input" in beiden Fällen "24 177,97"
{
if ( input == null || input.length() == 0 )
{
return null;
}
Locale locale = RequestProcessor.currentRequest().getLocale(); // in beiden Fällen "fr" mit leerem "country"
DecimalFormatSymbols fs = new DecimalFormatSymbols(locale);
DecimalFormat f = new DecimalFormat("#,##0.00", fs);
ParsePosition pp = new ParsePosition(0);
Number n = f.parse(input, pp);
if ( n == null ) // ie = 24177.97, firefox = 24
{
return error("errors.parse1");
}
BigDecimal bd = new BigDecimal(n.toString());
return bd;
}
für mich absolut unverständlich, und im bugzilla bin ich noch nicht fündig geworden...