1.前后台参数类型不一致
上图错误提示就是客户端发送的请求不能找到你的具体的页面或者地址,这是Spring MVC抛出的错误,这样我们就要进行参数的检查,一定是JSP提交的参数和Controller里面的参数不一致(有很多种情况,比如我的问题),
我的JSP代码:
<input type="hidden" title="id" name="id" value="${admin.id}">
在这里我的这个字段是叫做 "id" ,在看看我的controller里面的参数:
public AdministratorOtaResponse administratorAdminUpdate( @RequestParam(value = "adminrId", required = true) int id, @RequestParam(value = "sitePassword", required = true) String sitePassword, @RequestParam(value = "realName", required = true) String realName) {
在我的controller里面的我的Value = "adminId",就是因为这个问题啦,所以我只要改成Value = “id”,所有的事情就OK啦。
原因:这是因为前台form表单中的某些参数 和 后台接受的参数类型不一致导致的。即参数名称相同,但是类型不一致。spring mvc在绑定参数的时候出现异常,所以返回400错误。但是坑爹的地方在于,这个异常会被spring mvc吃掉,不会显示在控制台中。
解决办法:检查form表单中的参数和后台的参数对应,看是否有参数名相同但是类型不一致的情况。或者把当前日志设为debug 级别,然后在日志中即可看到spring 抛出的异常信息,即可发现哪个参数出现了错误。
2.SpringMVC form 表单提交报400错误
错误代码: HTTP Status 400 - type Status report message description The request sent by the client was syntactically incorrect. Apache Tomcat/7.0.47
原因:
400 请求出错
由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。
在 SpringMVC 中的 Action 中处理前台 ajax 请求传过来的 json 数据直接转成对应的实体类时出错:
400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求)。
解决办法:
检查实体类的 javabean 里边的类型是否和 springmvc form 的 form 表单名是否一致。
我的错误原因是两个关联的实体类导致在 form 表单中 name 名称不一致:
Employee.java
不断更新中。。。