No Mapping For GET "xxx.do"

今天写的一个form表单提交时总是报错找不到mapping,form如下:

1 <form action="toUpdate.do" method="post">
2         id:<input type="text" name="id" value="${list.id }" readonly="readonly"><br> 
3         name:<input type="text" name="name" value="${list.name }"><br> 
4         sex:男:<input type="radio" name="sex" value="1" ${list.sex==1?"checked='checked'":"" }> 
5             女:<input type="radio" name="sex" value="0" ${list.sex==0?"checked='checked'":"" }><br>
6         birthday:<input type="text" name="birthday" value="${list.birthday }"><br> 
7         phone:<input type="text" name="phone" value="${list.phone }"><br>
8         <input type="submit" value="ok">
9     </form>

检查发现每次提交时地址栏中多出了一部分:

这是由于在跳转页面时,由于使用了@PathVariable这个注解,所以在地址中插入了一个id

 1 <a href="toAddPage.do">添加</a>
 2     <table border="1">
 3         <tr>
 4             <td>id</td>
 5             <td>name</td>
 6             <td>sex</td>
 7             <td>birthday</td>
 8             <td>phone</td>
 9             <td colspan="2">操作</td>
10         </tr>
11         <c:forEach items="${list }" var="l">
12             <tr>
13                 <td>${l.id }</td>
14                 <td>${l.name }</td>
15                 <td>${l.sex==1?"男":"女" }</td>
16                 <td>
17                     <f:formatDate value="${l.birthday }" pattern="yyyy年MM月dd日"/>
18                 </td>
19                 <td>${l.phone }</td>
20                 <td><a href="${l.id }/toDelete.do">删除</a></td>
21                 <td><a href="${l.id }/toUpdatePage.do">修改</a></td>  //可以看到a标签的超链接地址中多了一个id
22             </tr>
23         </c:forEach>
24     </table>

这就导致在执行页面跳转后url里就多了一部分,这时再像上面的form表单那样填写action时就会使地址栏信息不匹配,出现500错误

此时form表单的action中应该加上项目路径,如下:

1 <form action="/t0402/toUpdate.do" method="post">
2         id:<input type="text" name="id" value="${list.id }" readonly="readonly"><br> 
3         name:<input type="text" name="name" value="${list.name }"><br> 
4         sex:男:<input type="radio" name="sex" value="1" ${list.sex==1?"checked='checked'":"" }> 
5             女:<input type="radio" name="sex" value="0" ${list.sex==0?"checked='checked'":"" }><br>
6         birthday:<input type="text" name="birthday" value="${list.birthday }"><br> 
7         phone:<input type="text" name="phone" value="${list.phone }"><br>
8         <input type="submit" value="ok">
9     </form>

这样就不会再报错了

原文地址:https://www.cnblogs.com/voidchar/p/10651043.html