我正在使用Spring,我正在努力弄清楚如何在控制器中获取当前页面URL的附加变量。例如,我在jsp页面中编辑一个Address对象,然后提交它,它将转到我控制器中的正确方法。但是,它没有传递刚刚修改过的Address对象的id值(但是其他每个值都被正确传递)。我的包含表单的页面正在获取传递给它的正确的id值,我甚至创建了隐藏的输入字段,其中包含地址id(我遇到的问题)和联系人ID(设置为控制器正确)。我想知道的是如何在相应的控制器方法中从表单页面的url中获取附加变量的值。如果那是不可能的,那么还有另一种方法来获得这个价值吗?
这是我的表格:
<form:form method="post" action="editAddress.html">
<table>
<tr>
<td><form:input type="hidden" path="id" placeholder="<c:out value='${command.id}' />"/></td>
</tr>
<tr>
<td><form:input type="hidden" path="contactId" placeholder="<c:out value='${command.contactId}' />"/></td>
</tr>
<tr>
<td><form:label path="street">Street: </form:label></td>
<td><form:input type="text" path="street" placeholder="<c:out value='${command.street}' />"/></td>
</tr>
<tr>
<td><form:label path="city">City: </form:label></td>
<td><form:input type="text" path="city" placeholder="<c:out value='${command.city}' />"/></td>
</tr>
<tr>
<td><form:label path="state">State: </form:label></td>
<td><form:input type="text" path="state" placeholder="<c:out value='${command.state}' />"/></td>
</tr>
<tr>
<td><form:label path="zip">Zip: </form:label></td>
<td><form:input type="text" path="zip" placeholder="<c:out value='${command.zip}' />"/></td>
</tr>
<tr>
<td><form:label path="galaxy">Galaxy: </form:label></td>
<td><form:input type="text" path="galaxy" placeholder="<c:out value='${command.galaxy}' />"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Update Address"/>
<input type="button" value="Delete Address" action="deleteAddress.html" />
</td>
</tr>
</table>
</form:form>
此页面的网址以以下结尾:/showAddress.html?id = 3
最后,这是我的控制器方法:
@RequestMapping(value="/editAddress")
public String updateAddress(@ModelAttribute("address") Address address, BindingResult result) {
//address param is coming from form values, not from a java obj
int id = address.getId(); //not getting this value
int contactId = address.getContactId(); //getting this correctly
dbService.updateAddress(address);
return "redirect:showContact.html?id=" + contactId;
}
id = 0,什么时候应该是3.有什么想法吗?我玩过HttpServletResponse,HttpServletRequest,ModelAndView,HttpSession等,但我似乎无法解决任何问题。这只是应用程序设计不佳的结果吗?任何帮助将不胜感激。感谢。
注意:id的值会改变,因为它是我的地址表的PK。
答案 0 :(得分:0)
我不知道我是如何忽略这一点的,但是使用HttpServletRequest的getParameter(“id”)就可以了。将HttpServletRequest对象作为参数传递给方法,使用String addressId = request.getParameter(“id”);它就像一个魅力。