springmvc数据绑定是一个很好的东西,在数据绑定的时候一定要主意Controller方法中的参数名和jsp页面里的参数名字是否一致或者按照绑定的规范来写,如果不一致,可能回报如下错误:
The request sent by the client was syntactically incorrect ().从字面上理解是:客户端发送的请求语法错误。实际就是springmvc无法实现数据绑定。
随便举个例子说明:
1.这里面的itemIds就一定要和jsp页面里的参数名字相同;如果你非要命名不相同要像levels的写法那样通过@RequestParam来转换,其中括号里面的level是jsp页面里面的参数名字,levels是在controller方法中要用到的名字;如果jsp页面中没有itemIds和level任何一个参数,也会报相同的错误,就是因为springmvc无法实现数据的绑定。
>>>表单接收字段的数据类型
The request sent by the client was syntactically incorrect ().从字面上理解是:客户端发送的请求语法错误。实际就是springmvc无法实现数据绑定。
随便举个例子说明:
1.这里面的itemIds就一定要和jsp页面里的参数名字相同;如果你非要命名不相同要像levels的写法那样通过@RequestParam来转换,其中括号里面的level是jsp页面里面的参数名字,levels是在controller方法中要用到的名字;如果jsp页面中没有itemIds和level任何一个参数,也会报相同的错误,就是因为springmvc无法实现数据的绑定。
- public String saveOrder(
- String[] itemIds,
- @RequestParam("level")String[] levels,
- ModelMap modelMap)
2.此处的value参数没有按照规定去绑定,或者你将value的值绑定到name处,都会出现以上错误.
<form:form action="${pageContext.request.contextPath}/app/saveApplication" method="post"
modelAttribute="applicationVo" class="form-vertical">
<table class="table table-bordered table-condensed" id="mytable">
<tbody class="tbd">
<!-- row 1 -->
<tr>
<td>申请编号:</td>
<td><input type="text" name="applicationNo" value="${applicationNo}"></td>
3.最近还发现一个特别隐藏的的错误,也将导致此错误的发生.
也就是你初始化界面的字段的数据类型和你提交表单接收字段的数据类型不一致的时候,也将导致这种错的出现.
>>>初始化界面的字段的数据类型
BigDecimal interestRate = paymentPlanParameter.getDftInterestRate();
>>>表单接收字段的数据类型
private Long interestRate;