SpringMVC处理Date类型的成员变量方法

    在使用 SpringMVC 的时候,我们可能需要将一个对象从 View 传递给 Controller 。而当这个 Object 只是一些简单的 String int 或者 boolean 类型的成员变量时, SpringMVC 能自动将 View 层的 JSON 包含的 String 类型转换为 Object 成员变量相应的类型。但是当这个 Object Date 类型的成员变量的时候, SpringMVC 在将 String 转换成 Date 类型时,就会出错,报异常。但是我们又需要使用 Date 类型的时候,其实 Spring 给我们提供了简单的操作方式可以完成这个任务的。

 

     SpringMVC提供了一个注解@DateTimeFormat。可以将View传过来的String类型转换为Date类型。具体使用方式很简单,直接在成员变量上加入注解就可以了,同时还可以指定format的格式,如下所示:

public class Person {

    private String name;

    //直接在date类型上加入注解,同时指定格式样式

    @DateTimeFormat( pattern = "yyyy-MM-dd" )

    private Date birthday;

    //setterAndGetter

}

 

       至此,不要以为完事大吉了,你还需要完成以下两个步骤才可以。

 

第一需要加入jodajar包。因为在@DateTimeFormat注解中使用到了joda包中的相关东西,所以缺少这个包也是会报异常的。如果使用的直接导入jar包的话,去下载joda-Jar导入即可,如果使用的是Maven管理项目的jar,那么在配置文件文件中加入依赖:

<dependency>

    <groupId>joda-time</groupId>

    <artifactId>joda-time</artifactId>

    <version>2.3</version>

</dependency>

 

第二需要在SpringMVC配置xml文件中(一般是dispatchServlet.xml文件)中加入配置:<mvc:annotation-driven />。这一句配置是一种简写,其实是给Spring容器中注入了两个Bena,分别是:DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter@DateTimeFormat注解的内部同样需要使用到前面注入的两个bean去处理,所以缺少这个配置,Spring容器中没有对应的bean去处理注解同样也会报错。至此,所有的步骤都完成了,可以跑了。

 

接下来我们跑跑测试一下,测试过程:

首先需要一个表单:

<form action="test" method="post">

    <input type="text" name="name">

    <input type="text" name="birthday">

    <input type="submit" name="提交">

</form>

 

    用一个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;

}

 

好了,总结一下整个过程,其实就3步:

1  Date类型的属性上加入@DateTimeFormat注解

2、  加入joda相关的包

3、  SpringMVC配置文件中加入<mvc:annotation-driven />

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值