springmvc前端到后台数据映射的时候出现了The request sent by the client was syntactically incorrect.错误,发现是前端日期是字符串类型的,传到后台时,后台的Java程序不能将字符串日期解释成Date类型的日期。

方法一:实体类中加日期格式化注解

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date receiveAppTime;

方法二:控制器Controller中加入一段数据绑定代码(即使用@InitBinder注解,适合作用于局部

package com.hern.core.controller;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.support.WebBindingInitializer;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author Hern
 * @Date 2019-09-09 21:59
 * @Describle 后台管理
 * */
@Controller
public class CenterController {

    @RequestMapping(value = "/test/springmvc.do",method = RequestMethod.POST)
    public String test(String name, Date date){
        System.out.println(name + "  " + date);
        return "";
    }

    //局部日期格式处理
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        //转换日期格式
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //进行参数注册,并设置日期不能为空
        binder.registerCustomEditor(Date.class,new CustomDateEditor(dateFormat,false));
    }
}

方法三:实现一个全局日期类型转换器并进行配置 

1、定义DateConverter类

package com.hern.core.web;

import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author Hern
 * @Date 2019-09-13 19:51
 * @Describle Spring3.1之后全局日期转换方式
 */
public class DateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //设置不会对日期进行计算
        simpleDateFormat.setLenient(false);

        try {
            return simpleDateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return null;
    }
}

2、springmvc.xml文件中进行配置

 <!--配置注解处理器映射器-->
    <!--配置注解处理器适配器-->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
    <!--配置自定义日期转换器,并且在mvc:annotation-driven 标签中加上conversion-service属性-->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.hern.core.web.DateConverter"></bean>
            </list>
        </property>
    </bean>