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>