今天在使用前端向后端传递对象时出现了一个问题,对象内部封装了Date,导致前端传回的string串无法强制转换为对应的Date类型。很恼火。直到我看到有一篇博客里面讲:
java.util.Date日期格式为:年月日时分秒
java.sql.Date日期格式为:年月日
java.sql.Time日期格式为:时分秒
java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)
我注意到
在开发过程中,当我们提交的表单中有date时间类型的参数时,所提交的表单也许就会不成功,服务器无法处理该请求,浏览器报400错误-请求无效。
原因:
出现这个请求无效报错说明请求没有进入到后台服务里;
前端提交数据的字段名称或者是字段类型和后台的实体类不一致,或前端提交的参数跟后台需要的参数个数不一致,导致无法封装。
我报400错误的原因大部分就是因为提交的请求中有date类型的参数所导致的。
若实体类中导入的是java.sql.Date包,那提交date类型参数时也许就能够封装不会报错;
但如果实体类中导入的是java.util.Date包,那提交date类型参数时就会报错,请求无效,无法封装。(java.sql.Date是java.util.Date的子类)
人家也给了解决方法
但看看我自己的代码,实际上只要将java.util.Date替换为java.sql.Date就可以传递Date了。
但还有个问题就是换成java.sql.Date后@Temporal这个注解就不支持了。