No Mapping For GET "xxx.do"

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

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

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

No Mapping For GET "xxx.do"

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

 <a href="toAddPage.do">添加</a>
<table border="1">
<tr>
<td>id</td>
<td>name</td>
<td>sex</td>
<td>birthday</td>
<td>phone</td>
<td colspan="2">操作</td>
</tr>
<c:forEach items="${list }" var="l">
<tr>
<td>${l.id }</td>
<td>${l.name }</td>
<td>${l.sex==1?"男":"女" }</td>
<td>
<f:formatDate value="${l.birthday }" pattern="yyyy年MM月dd日"/>
</td>
<td>${l.phone }</td>
<td><a href="${l.id }/toDelete.do">删除</a></td>
<td><a href="${l.id }/toUpdatePage.do">修改</a></td>  //可以看到a标签的超链接地址中多了一个id
</tr>
</c:forEach>
</table>

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

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

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

这样就不会再报错了

上一篇:ps命令实用方法.ps -l ps -L详解


下一篇:MySQL创建用户与授权方法实例精讲