springMvc接受日期类型参数处理

这个问题,也即是springMvc如何进行参数类型的转换

以把client传过来一个String类型,转换为日期类型为例:

1.controller

/**
     * 接收日期类型参数
     *     注意:
     *         springmvc 在接收日期类型参数时,如不做特殊处理 会出现400语法格式错误
     *  解决办法
     *      1.全局日期处理
     *
     */

    @RequestMapping("/test")
    public String test(Date birthday){
        System.out.println(birthday);
        return "index";
    }

2.自定义类型转换规则

SpringMvc提供了Converter接口,它支持从一个Object转换为另一个Object

/**
 * 全局日期处理类
 * Convert<T,S>
 *         泛型T:代表客户端提交的参数 String
 *         泛型S:通过convert转换的类型
 */
public class DateConvert implements Converter<String, Date> {

    @Override
    public Date convert(String stringDate) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return simpleDateFormat.parse(stringDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

}

3.注册自定义的类型转换类

  <!-- 第三步:注册处理器映射器/处理器适配器 ,添加conversion-service属性-->
    <mvc:annotation-driven conversion-service="conversionService"/>

    <!-- 第二步: 创建convertion-Service ,并注入dateConvert-->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="dateConvert"/>
            </set>
        </property>
    </bean>
    <!-- 第一步:  创建自定义日期转换规则 -->
    <bean id="dateConvert" class="zpark.convert.DateConvert"/>

4.地址栏访问

http://localhost:9999/date/test2?birthday=1990-01-02

参考:http://blog.csdn.net/renhui999/article/details/9837897

ps:测试了很久才成功,失败的次数太多就不记录下来了,这里只是记录了测试正确的步骤

package zpark.convert;
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;
import org.springframework.core.convert.converter.Converter;/** * 全局日期处理类 * Convert<T,S> * 泛型T:代表客户端提交的参数 String *      泛型S:通过convert转换的类型 */public class DateConvert implements Converter<String, Date> {
@Overridepublic Date convert(String stringDate) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");try {return simpleDateFormat.parse(stringDate);} catch (ParseException e) {e.printStackTrace();}return null;}
}

时间: 2024-11-06 18:09:44

springMvc接受日期类型参数处理的相关文章

springmvc 接受特殊类型字段的处理方法

springmvc接受前台传入的数据时如果该字段类型无法被封装(如Date),则会出现400 Bad Request错误,解决方法如下. 1.在需要处理的字段前加上注解: @DateTimeFormat( pattern = "yyyy-MM-dd" ) 然后在项目中引入joda-time.jar包,最后在在 SpringMVC 配置 xml 文件中中加入配置: <mvc:annotation-driven /> .这一句配置是一种简写,其实是给 spring 容 器中注入

spring MVC 控制器(controller)接收日期类型参数出现400错误

最近刚学完 spring mvc ,遇到一个问题.就是当我表单有日期类型的数据(如出生日期)提交到后台控制器时:就发生了400error:400error用简短的话来说就是请求参数类型和后台接收参数类型对不上等. 我大概一猜就知道是因为日期类型参数的问题:下面总结了一些处理 springMVC 在接收date类型参数的处理. ====方法one 我们后台的参数用String先接收,再把string转成date./** * 新增员工 * * @param empVo * @return 返回成功标

Struts2接受参数的几种类型和接受复杂类型参数(list&lt;String&gt;和list&lt;Object&gt;)

Struts2接受参数的几种类型 大概有这几种类型: 1.使用Action的属性接受参数 在Action中加入成员变量,配置Getter和Setter方法,Getter而和Setter方法的名字和表单中input标签的name属性一致(简单来说就是Action中变量的名和表单中input的name值一致) 2.使用DomainModel接收参数 JSP: <form action="LoginAction.action" method="post"> U

springMVC接受json类型数据

springMVC接受json格式的数据很简单 使用@RequestBody 注解,标识从请求的body中取值 服务端示例代码 @RequestMapping(value = "/t4", method = RequestMethod.POST) @ResponseBody public Result t3(@RequestBody SysUser user) { Result r = Result.success(); r.setData(user); return r; } 客户端

springMVC 前后台日期格式传值解决方式之二(共二) @InitBinder的使用

关于springmvc日期问题的解决方式 除了本博客的[springMVC 前后台日期格式传值解决方式之 @DateTimeFormat的使用和配置]一文, 还有如下这种方式: 在Controller里加上这段代码: 1 @InitBinder 2 public void initBinder(ServletRequestDataBinder binder) { 3 /** 4 * 自动转换日期类型的字段格式 5 */ 6 SimpleDateFormat sdf = new SimpleDat

关于springmvc接受简单参数和List集合数据的实现

首先要创建一个搭建一个springmvc的工程,至于如何搭建这里就不说了.给出比较重要的配置,项目目录结构如下,弄的比较简单,因为最近遇到一个需要传递List集合数据的问题,所以就当做实验. web.xml配置: springmvc.xml配置: 接下来是三个简单的POJO类: 给出了类的属性,getter,setter和toString方法就不贴了,下面是我用fidder模拟表单的一个请求: 然后就是controller类的代码,及接受到的数据 有什么问题我们可以交流交流!

SpringMVC对日期类型的转换

在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd")  ,即可将String转换为Date类型,如下 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime; 2.如果我们只负责we

EasyUI+SpringMVC+Hibernate 日期区间查询统计

图书借阅管理系统,统计书籍借阅情况,可查询历史借阅排行和分类排行,默认返回前30名.查询时用sql jsp,这里用到了easyui-datebox,用formatter和parser对日期格式进行转换,转换成YYYY-MM-DD 的格式,后台直接是String接受 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

springMVC接受ajax提交表单,json数据的两种方式

作为一个初入互联网行业的小鑫鑫,在使用springMVC时发现一个好耍的东西,决定记下来,免得哪天忘了,哈哈 第一种 序列化表单,将表单数据序列化为json对象字符串 $("#submit").click(function (){ var form=$("form").serializeArray(); $.ajax({ url:"${pageContext.request.contextPath}/teacher/updateTeacher",