我刚刚开始使用Spring MVC编写应用程序。我有2个实体,区和&市。一个城市有很多区,每个区都属于一个城市。
在district.jsp中我声明了一个表单,允许用户输入地区名称和一个选择框来选择它所属的城市。
区实体看起来像这样:
<form:form action="${aAction}" commandName="district">
<table>
<c:if test="${!empty district.districtName}">
<tr>
<td>
<form:label path="id">
<spring:message text="ID"/>
</form:label>
</td>
<td>
<form:input path="id" readonly="true" size="8" disabled="true" />
<form:hidden path="id" />
</td>
</tr>
</c:if>
<tr>
<td>
<form:label path="districtName">
<spring:message text="District Name"/>
</form:label>
</td>
<td>
<form:input path="districtName" />
</td>
</tr>
<tr>
<td>
<form:label path="belongToCity">
<spring:message text="Belong to City"/>
</form:label>
</td>
<td>
<c:if test="${!empty listCities}">
<form:select path="belongToCity" items="${listCities}" itemLabel="cityName" itemValue="id"></form:select>
</c:if>
</td>
</tr>
<tr>
<td colspan="2">
<c:if test="${!empty district.districtName}">
<input type="submit"
value="<spring:message text="Edit District"/>" />
</c:if>
<c:if test="${empty district.districtName}">
<input type="submit"
value="<spring:message text="Add District"/>" />
</c:if>
</td>
</tr>
</table>
</form:form>
在我的区控制器中,我声明添加操作。
@RequestMapping(value = {"/district/add"}, method = RequestMethod.POST)
public String addDistrict(@ModelAttribute("district") District p,Model model, BindingResult result) {
if(result.hasErrors()) {
return "district";
}
this.districtService.addDistrict(p);
return "district";
}
但是,当我运行我的项目时,它会显示400错误和错误消息:&#34;客户端发送的请求在语法上是不正确的。&#34;
我怀疑我的表单在某处错了,也许它无法发布到控制器处理。有人可以帮我确定问题吗?
答案 0 :(得分:1)
您的BindingResult参数应与modelAttribute相邻。下面应该是方法签名。
@RequestMapping(value = {"/district/add"}, method = RequestMethod.POST)
public String addDistrict(@ModelAttribute("district") District p, BindingResult result, Model model) {
if(result.hasErrors()) {
return "district";
}
this.districtService.addDistrict(p);
return "district";
}