SpringMVC学习之日期类型转换@DateTimeFormat

因为日期在各个国家的表示形式不一样,所以在输入日期的时候很容易出现400错误。这个时候就需要进行日期转换了。

  1. 对于单个属性来说:直接在方法的参数列表中添加@DateTimeFormat标签就行了,然后在标签中@DateTimeFormat(pattern = "yyyy-MM-dd")即可。

    `@Controller("formController")

     public class FormController {
     @PostMapping("/apply")
     @ResponseBody
     public String apply(@RequestParam String name, @DateTimeFormat(pattern = "yyyy-MM-dd") Date createTime, String course, @RequestParam  List<Integer> purpose) {
     System.out.println(name);
     System.out.println(course);
     System.out.println(createTime);
     for (Integer p:purpose) {
         System.out.println(p);
     }
     return "success";

    }`

  2. 对于使用实体对象接受数据

    • 首先在实体对象中创建createTime对象
    • 然后在对象的上面添加@DateTimeFormat(pattern = "yyyy-MM-dd")
      就可以了。
  3. 全局默认时间转换器

    • 首先新建一个包converter*(与controller同一路径下),然后包中创建一个类,实现Converter<String, Date>。泛型的第一个为需要转换的对象类型,第二个为转换成的对象类型。
    • 具体的程序
      public class MyDateConverter implements Converter<String, Date> {
      public Date convert(String s) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         try {
             Date d = sdf.parse(s);
             return d;
         } catch (ParseException e) {
             return null;
         }
      }
      }
  • 在applicationContext中定义,让springmvc知道这个转换器,而且还要在启用Spring MVC的注解开发模式的标签中,添加一个conversion-service
    <!--启用Spring MVC的注解开发模式-->
      <mvc:annotation-driven conversion-service="conversionService">
    
<bean class="org&#46;springframework&#46;format&#46;support&#46;FormattingConversionServiceFactoryBean" id="conversionService"> <property name="converters"> <set> </set> </property> </bean> ```