解决SpringMVC入参出现The request sent by the client was syntactically incorrect请求语法错误方法
2016-02-19 13:47
791 查看
使用SpringMVC出现The request sent by the client was syntactically incorrect.请求错误如下:
可以确定为提交的表单数据和目标方法的入参不一致所导致,表单数据可以多于目标入参个数,但目标参数没有被赋值,则会出现该异常,如下情况:
表单数据:
目标方法:
Employee字段:
比对表单数据和Employee字段,可以发现,表单数据比Employee字段少,再加上目标方法的入参是一个
Employee对象,所以将会出现提交的数据不足,解决的办法:
①直接使用@RequestParam()标签,指定和表单数据相同的入参然后再装配Employee对象
②从数据库中加载一个Employee对象,让表单提交的数据在加载的对象上进行修改,没有修改的字段将会原封不动:
@ModelAttribute
public void getEmployee(@RequestParam(value="id", required=false)
Integer id,Map<String, Object> map)
{
Employee employee;
if(id != null)
{
employee = employeeService.getEmpById(id);
map.put("employee", employee);
}
}
在加载对象时注意:Employee的所有字段都要查询出来,所以,对于底层的DAO就不能使用懒加载,如果使用了懒加载也将会出现该错误。
可以确定为提交的表单数据和目标方法的入参不一致所导致,表单数据可以多于目标入参个数,但目标参数没有被赋值,则会出现该异常,如下情况:
表单数据:
目标方法:
Employee字段:
比对表单数据和Employee字段,可以发现,表单数据比Employee字段少,再加上目标方法的入参是一个
Employee对象,所以将会出现提交的数据不足,解决的办法:
①直接使用@RequestParam()标签,指定和表单数据相同的入参然后再装配Employee对象
②从数据库中加载一个Employee对象,让表单提交的数据在加载的对象上进行修改,没有修改的字段将会原封不动:
@ModelAttribute
public void getEmployee(@RequestParam(value="id", required=false)
Integer id,Map<String, Object> map)
{
Employee employee;
if(id != null)
{
employee = employeeService.getEmpById(id);
map.put("employee", employee);
}
}
在加载对象时注意:Employee的所有字段都要查询出来,所以,对于底层的DAO就不能使用懒加载,如果使用了懒加载也将会出现该错误。
相关文章推荐
- Spring MVC--拦截器实现和用户登陆例子
- Java简单实现SpringMVC+MyBatis分页插件
- SpringMVC文件上传 多文件上传实例
- SpringMVC restful 注解之@RequestBody进行json与object转换
- spring mvc4的日期/数字格式化、枚举转换示例
- 解决springmvc+mybatis+mysql中文乱码问题
- SpringMVC上传图片与访问
- nginx服务器access日志中大量400 bad request错误的解决方法
- Linux服务器nginx访问日志里出现大量http 400错误的请求分析
- SpringMVC入门小程序 -- Myeclipse 9.1下
- SpringMVC+Spring3+Hibernate4
- SpringMVC+MyBatis项目总结(一)
- SpringMVC+MyBatis项目总结(三)
- SpringMVC+MyBatis项目总结(四)
- springMVC+spring+Mybatis
- SpringMVC+mybatis+Spring框架整合+简单实现的demo
- Springmvc与jasperreport结合生成报表的一种方法 4000
- 搭建分布式架构2--CentOs下安装Tomcat7(环境准备)
- 搭建分布式架构4--ZooKeeper注册中心安装
- 搭建分布式架构5--ZooKeeper 集群的安装 3ff0