1.遇到问题
使用SpringMVC的数据绑定和表单标签时,点击表单按钮操作后出现 404 错误 :The request sent by the client was syntactically incorrect.如下图:
2.发现问题根源
在Controller控制类中,用@RequestMapping(value = "/book_update"),然而显示的网址上却是http://localhost:8080/SpringMVCFormLabel/book_edit/book_update
比要转到的控制类方法多了一部分( 因为要更新之前经过另一个控制类的方法 ,先要执行 /book_edit/{id} ,执行了/book_edit/{id} 之后,再转到别的,就只有把{id}变掉,前面的book_edit保留)
3,解决
1) 在原来的@RequestMapping(value="/book_update")改为 @RequestMapping(value="/book_edit/book_update")
2)在提交表单时的action处改成 action = "../book_update" ;@RequestMapping(value="/book_update")不变
3)在提交表单时的action处改成 action = "/项目名/book_update";@RequestMapping(value="/book_update")不变
以上三种方法在复杂的项目下会比较复杂,第四种方法比较简单,不需要改@RequestMapping中的value,
在提交的时候加上获取上下文的代码即可,如下:
4) action="${PageContext.request.contextPath}/book_update"
注意第四种方法在使用的时候,要确定jsp页面是不是支持EL表达式,如果不支持,要在jsp页面的上面添加一个page指令,如下: <%@ page isELIgnored="false" %>