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

最近刚学完 spring mvc ,遇到一个问题。就是当我表单有日期类型的数据(如出生日期)提交到后台控制器时;就发生了400error;400error用简短的话来说就是请求参数类型和后台接收参数类型对不上等。

我大概一猜就知道是因为日期类型参数的问题;下面总结了一些处理 springMVC 在接收date类型参数的处理。

 

====方法one

  我们后台的参数用String先接收,再把string转成date。/**

     * 新增员工
     *
     * @param empVo
     * @return 返回成功标识
     */
    @RequestMapping("/empAdd")
    @ResponseBody                     //hireday 是前台表单传过来的日期
    public String empAdd(EmpVo empVo, String hireday) {

     //把字符串日期转成date格式    SimpleDateFormat format
= new SimpleDateFormat("yyyy-MM-dd"); ParsePosition position1 = new ParsePosition(0); Date hiredayDate = format.parse(hireday, position1); //分别是入职日期和出生日期 empVo.setHireDay(hiredayDate); // DateHelper.parseString(StringHelper.getBirAgeSex(empVo.getCardno()).get("birthday") // 通过身份证获取出生日期 empVo.setBirthday( DateHelper.parseString(StringHelper.getBirAgeSex(empVo.getCardno()).get("birthday"),"yyyy-MM-dd")); //状态 empVo.setStatus(1); //默认密码 empVo.setPassword("123456"); emp.save(empVo); return "success"; }

 

====方法two

  实体类中加日期格式化注解  

@DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date hireDay;//入职日期

@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    public Date getHireDay() {
        return hireDay;
    }

 

====方法three(推荐

  控制器加入日期数据绑定方法

//将字符串转换为Date类
    @InitBinder
    public void initBinder(WebDataBinder binder, WebRequest request) {
        //转换日期格式
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //注册自定义的编辑器
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
        
    }

 

====方法four

  实现全局日期类型转换器并进行配置

  设计日期转换类

package com.xueqing.demo;
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.support.WebBindingInitializer;
import org.springframework.web.context.request.WebRequest;
 
public class DateEdtor implements WebBindingInitializer {   
    public void initBinder(WebDataBinder binder, WebRequest request) {
        // TODO Auto-generated method stub
        //转换日期格式
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }
}

在spring MVC配置文件进行配置

<!-- 配置全局日期转换器 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="webBindingInitializer">    
            <bean class="nuc.ss.wlb.core.web.DateEdtor"/>
        </property>
    </bean>

  

  

posted @ 2019-12-31 23:43  听~风在北边  阅读(1674)  评论(0编辑  收藏  举报