SpringMVC 处理Date类型@DateTimeFormat @InitBinder

第一种:

  1. 在Date类型的属性上加入@DateTimeFormat注解
  2. 加入joda相关的包
  3. 在SpringMVC配置文件中加入
    首先在相对应的属性上加注解:
public class Person{
    //直接在date类型上加入注解,同时指定格式样式
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date birthday;
}

具体流程:
加入joda的jar包。因为在@DateTimeFormat注解中使用到了joda包中的相关东西,所以缺少这个包也是会报异常的。这里使用maven依赖。

    <dependency>
        <groupId>joda-timegroupId>
        <artifactId>joda-timeartifactId>
        <version>2.9.7version>
dependency>

第二需要在SpringMVC配置XML文件中加入配置:。这一句配置是一种简写,其实是给Spring注入了两个bean,分别是:DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter注解的内部同样需要使用到前面注入的两个bean去处理,所以缺少这个配置,Spring容器中没有对应的bean去处理注解同样也会报错。进入测试:

"test" method="post"> type="text" name="name"/> type="text" name="birthday"/> type="submit" name="提交"/>

用一个Controller接收:

@RequestMapping("/test")
public ModelAndView test(HttpServletRequest request,@ModelAttribute Person person){
    ModelAndView view = new ModelAndView();
    System.out.println(person.toString());
    view.setViewName("/test/data");
    return view;
}

结束。

第二种:
使用 解决
- 第一步:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>  
  • 第二步
value="转换对象" type="转换格式"/>  

type可以指定具体类型,如下:

1.value="${date}" type="both"/>  
输出格式: 2010-5-31 23:59:59  

举例:

<td><fmt:formatDate value="${book.bookPublicationDate }" type="date"/>td>

可以和其他标签结合使用

type="text"  name="bookPublicationDate" value="list.bookPublicationDate }" type="date"/>">

在value里直接使用 格式化锁取到的值


3.@InitBinder
所在的Controller里面,加上使用@InitBinder声明的方法
在DataBinder先进行日期处理

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }
value="" type=""/>中type的其他类型


2.value="${date}" type="date"/>  
输出格式: 2010-4-1  

3.value="${date}" type="time"/>  
输出格式: 23:59:59  

4.value="${date}" type="date" dateStyle="default"/>  
输出格式:2010-5-31  

5.value="${date}" type="date" dateStyle="short"/>  
输出格式:04-5-31  

6.value="${date}" type="date" dateStyle="medium"/>  
输出格式:2010-5-31  

7.value="${date}" type="date" dateStyle="long"/>  
输出格式: 20105318.value="${date}" type="date" dateStyle="full"/>  
输出格式:2010531日 星期一  

9.value="${date}" type="time" timeStyle="default"/>  
输出格式: 23:59:59  

10.value="${date}" type="time" timeStyle="short"/>  
输出格式:下午11:59  

11.value="${date}" type="time" timeStyle="medium"/>  
输出格式: 23:59:59  

12.value="${date}" type="time" timeStyle="long"/>  
输出格式: 下午11595913.value="${date}" type="time" timeStyle="full"/>  
输出格式: 下午115959秒 CDT  

14.value="${date}" type="both" pattern="EEEE, MMMM d, yyyy 输出格式: HH:mm:ss Z"/>  
星期四, 四月 1, 2010 13:30:00 -0600  

15.value="${date}" type="both" pattern="d MMM yy, h:m:s a zzzz/>  
输出格式: 31 五月 04, 11:59:59 下午 中央夏令时  

你可能感兴趣的:(SpringMVC)