Другой шаблон локали в автономном приложении Java и веб-приложении

Почему при использовании в качестве отдельного Java-приложения и веб-приложения (сервлета) используются разные выходные данные для приведенного ниже кода?

Код:

Locale locale=new java.util.Locale("nb");// locale for Norwegian, Bokmal (Norway)
DecimalFormat decimalFormatter=(DecimalFormat) DecimalFormat.getInstance(locale);

System.out.println(decimalFormatter.toLocalizedPattern());
System.out.println(locale.getDisplayLanguage());
System.out.println(decimalFormatter.format(1234.567));

Выходы:

автономное приложение JAVA:

# ##0,###
Norwegian Bokmål
1 234,567

как веб-приложение (сервлет)

#,##0.###
Norwegian Bokmål
1,234.567

Java Version : JDK.1.6.0_23 Web Server : Jetty enclosed in Eclipse Juno


РЕДАКТИРОВАТЬ

Вот некоторые выводы, предложенные @haraldK

Можно ли получить NumberFormat, как это предусмотрено стандартной реализацией Java, а не реализацией провайдера?

Вот исходный код NumberFormat.getInstance(Locale), который внутренне вызывает закрытый метод NumberFormat.getInstance(Locale,int), как показано ниже:

private static NumberFormat getInstance(Locale desiredLocale,
                                       int choice) {
    // Check whether a provider can provide an implementation that's closer
    // to the requested locale than what the Java runtime itself can provide.
    LocaleServiceProviderPool pool =
        LocaleServiceProviderPool.getPool(NumberFormatProvider.class);
    if (pool.hasProviders()) {
        NumberFormat providersInstance = pool.getLocalizedObject(
                                NumberFormatGetter.INSTANCE,
                                desiredLocale,
                                choice);
        if (providersInstance != null) {
            return providersInstance;
        }
    }
    ...
}

0 ответов

Другие вопросы по тегам