3

是否有人有这个问题:如何在春天配置基于区域日期格式的支持

我需要春天配置,以识别和本地化相关的日期和数字格式,即下面的用户行为应该是有效的:

  1. 用户选择语言为EN,那么数字格式1.23应该是有效的,spring mvc会接受这种格式并且没有触发有效的错误。用户也可以使用日期格式MM/dd/yyyy更改日期,并且不会产生有效错误,用户可以发布此表单。
  2. 用户选择语言为DE,那么数字格式1,23应该是有效的,spring mvc将接受这种格式并且没有触发有效的错误。用户还可以使用日期格式dd.MM.yyyy更改日期,并且不会触发有效的错误。用户可以发布此表单。

心中已经试图用@DateTimeFormat(pattern="#{messageSource['date_format']}"),(在messages_(区域)的.properties我已经DATE_FORMAT定义),但似乎春天不支持此尚未见JIRA ISSUE

是否有人有类似的问题,有一个解决方案。

它有助于编写我自己的转换器,并将它注册到org.springframework.format.support.FormattingConversionServiceFactoryBean?我需要某种形式的基于请求转换器

回答

4

因为没有人回答我的问题,我只是张贴我的解决方案之一来解决这个问题,它可以帮助别人:

  1. 我有一个请求范围的bean,这样就解决了语言环境使用:RequestContextUtils.getLocale(request);请求可以自动装配到请求作用域类(注意,它仅适用于字段注入,不适用于构造或setter)。在这个类中,我获得了基于区域的日期/数字格式。
  2. 在我的控制器(我们实际上有一个abstractController)。我有这样的代码:

    @InitBinder 
    public void initBinder(WebDataBinder binder) { 
        binder.registerCustomEditor(Date.class, new LocalizedDateEditor(formatHelper)); 
    } 
    

formatHelper是请求作用域bean。 LocalizedDateEditor看起来是这样的:

public class LocalizedDateEditor extends CustomDateEditor { 

    public LocalizedDateEditor(FormatHelper formatHelper) { 
     super(new SimpleDateFormat(formatHelper.getDefaultDateFormat()), true); 
    } 
} 

它只是告诉Spring使用我的日期格式。

就是这样。

相关问题