如何使Spring Joda-Time格式化程序与非标准语言环境一起使用?

时间:2014-01-22 01:36:33

标签: java spring spring-mvc jodatime

我正在使用Spring 3.1和Joda-Time开发一个多语言应用程序。

让我们假设我有一个这样的命令对象:

private class MyCommand {
    private LocalDate date;
}

当我使用英国或美国语言环境请求时,它可以正确解析并使用相应的日期格式绑定date而没有任何问题,例如分别于2013年10月21日和10月21日。 但是如果我有一些像georgian new Locale("ka")这样的语言环境,它就不会绑定有效日期21.10.2014。所以我需要挂钩Spring格式化程序才能在每个语言环境中提供自己的格式。我有一个bean可以从语言环境中解析日期格式。你能指点我正确的方向我该怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您必须实现自己的org.springframework.format.Formatter

实施例

public class DateFormatter implements Formatter<Date> {

    public String print(Date property, Locale locale) {
        //your code here for display
        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, LocaleContextHolder.getLocale());
        String out = df.format(date);
        return out;
    }

    public Date parse(String source, Locale locale)
        // your code here to parse the String
    }
}

在你的春季配置中:

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" >
    <property name="formatterRegistrars">
        <set>

        </set>
    </property>
    <property name="converters">
        <set>

        </set>
    </property>
    <property name="formatters">
        <set>
            <bean class="com.example.DateFormatter" />
        </set>
    </property>
</bean>

<mvc:annotation-driven conversion-service="conversionService"/>

希望它可以帮到你!