post提交参数有Date类型,总是返回400格式错误
2017-10-10 17:08
351 查看
post提交参数有addtime时,总是返回400错误。
将参数改为addTime时,就能正常提交了。
尝试了各种方法,纠结了好久还是没搞定,之前猜测试addtime是关键字导致的不能提交,后来测试,addtime是可以提交的。
经过不断尝试终于找到了原因:spring mvc 在接收日期类型参数时,如不做特殊处理 会出现400语法格式错误
解决办法:
我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然后逐渐对问题进行跟踪,会发现是日期类型转换失败“映射”不到对应的持久类的日期属性上造成的,由此我还特意写过一篇博文:SpringMVC中出现"
400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法。感兴趣的码农可以看一看,总结了常见造成springMVC出现“400 Bad Request”错误的七大原因,其中就有前台的字符串日期类型与后台的java日期类型匹配不上造成的。
今天晚上呢,特意抽出宝贵的时间来总结归纳出一下解决这个问题的三大方法,分享给大家,以帮助更多像我一样的人。鄙人不才,如果过程中有讲解的不清或者不对的地方,还望认真阅读的您,留下你的宝贵意见或建议,以便您,我,还有大家更快更好的共同进步!
好了,我们切入正题吧!
plain copy
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date receiveAppTime;
如上,在对应的属性上,加上指定日期格式的注解,本人亲自测试过,轻松解决问题!
plain copy
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); //true:允许输入空值,false:不能为空值
此方法较为复杂,请详细查看本人的这篇博文:SpringMVC配置全局日期转换器,处理日期转换异常
[java] view
plain copy
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<fmt:formatDate value="${job.jobtime }" pattern="yyyy-MM-dd HH:mm:ss"/>
Freemarker模版引擎方法:
[java] view
plain copy
<input id="receiveAppTime" name="receiveAppTime" type="text" value="${(bean.receiveAppTime?string('yyyy-MM-dd'))!}" />
OK了,完了,希望以上方法能帮助正在阅读的您!
转载请注明—作者:Java我人生(陈磊兴) 原文出处:http://blog.csdn.net/chenleixing/article/details/44708533
将参数改为addTime时,就能正常提交了。
尝试了各种方法,纠结了好久还是没搞定,之前猜测试addtime是关键字导致的不能提交,后来测试,addtime是可以提交的。
经过不断尝试终于找到了原因:spring mvc 在接收日期类型参数时,如不做特殊处理 会出现400语法格式错误
解决办法:
我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然后逐渐对问题进行跟踪,会发现是日期类型转换失败“映射”不到对应的持久类的日期属性上造成的,由此我还特意写过一篇博文:SpringMVC中出现"
400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法。感兴趣的码农可以看一看,总结了常见造成springMVC出现“400 Bad Request”错误的七大原因,其中就有前台的字符串日期类型与后台的java日期类型匹配不上造成的。
今天晚上呢,特意抽出宝贵的时间来总结归纳出一下解决这个问题的三大方法,分享给大家,以帮助更多像我一样的人。鄙人不才,如果过程中有讲解的不清或者不对的地方,还望认真阅读的您,留下你的宝贵意见或建议,以便您,我,还有大家更快更好的共同进步!
好了,我们切入正题吧!
方法一:实体类中加日期格式化注解
[java] viewplain copy
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date receiveAppTime;
如上,在对应的属性上,加上指定日期格式的注解,本人亲自测试过,轻松解决问题!
方法二:控制器Action中加入一段数据绑定代码
[java] viewplain copy
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); //true:允许输入空值,false:不能为空值
方法三:实现一个全局日期类型转换器并进行配置
此方法较为复杂,请详细查看本人的这篇博文:SpringMVC配置全局日期转换器,处理日期转换异常附加方法四:适合页面把日期类型转换成字符串且JSP,Freemark页面
JSP模版引擎方法:[java] view
plain copy
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<fmt:formatDate value="${job.jobtime }" pattern="yyyy-MM-dd HH:mm:ss"/>
Freemarker模版引擎方法:
[java] view
plain copy
<input id="receiveAppTime" name="receiveAppTime" type="text" value="${(bean.receiveAppTime?string('yyyy-MM-dd'))!}" />
OK了,完了,希望以上方法能帮助正在阅读的您!
转载请注明—作者:Java我人生(陈磊兴) 原文出处:http://blog.csdn.net/chenleixing/article/details/44708533
相关文章推荐
- post提交参数有Date类型,总是返回400格式错误
- Spring mvc提交form包含date类型数据错误400问题。
- 关于 Ajax 提交参数格式,及返回类型json
- bootstrap-datetimepicker提交java datetime类型数据的时候总是400错误
- SpringMvc 参数是对象,包含不提交基本类型的时候 400错误
- 错误总结之Date类型数据返回格式
- 通过HttpClient调用WebApi的Get、Post方法(返回类型限定为json格式)
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式转化报400错误解决方法
- 以$.post方式提交数据 并以json格式返回数据
- 父类和子类的同名成员函数参数格式相同,返回值类型不同
- 前后端分离。前端POST请求参数过长,导致400错误解决办法及分析
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- springmvc 1.接受日期类型的参数 2.后台返回json串的格式处理(返回json串null值处理为"")
- java,返回的json数据中Date类型格式的转换
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- post提交数据返回404错误
- 解决YII提交POST表单出现400错误,以及ajax post请求时出现400问题
- curl post请求总是返回417错误
- 阿里巴巴接口时间(Date)类型字段提交格式