2015-08-20 39 views
0

我正在玩弄Spring,并且我正在最困难的时间弄清楚如何在控制器中获取当前页面URL的附加变量。例如,我编辑一个jsp页面中的Address对象,然后提交它,并在我的控制器中转到正确的方法。但是,它并未传递刚刚修改的Address对象的id值(但其他值正确传入)。包含表单的页面获取传递给它的正确的id值,并且我甚至创建了隐藏的输入字段,其中包含地址标识(我遇到问题的标识)和联系人标识(设置为控制器正确)。我想知道的是,如何从我的相应控制器方法的表单页面的url中获取附加变量的值。如果这不可能,那么是否有另一种方法来获得这个价值?获取当前页面的附加URL值 - Spring

这里是我的形式:

<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> 

而对于本网页的URL与下面的结尾:/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

我不知道我是如何忽略这一点,但使用HttpServletRequest的getParameter(“id”)做了伎俩。将一个HttpServletRequest对象作为参数传入该方法,使用String addressId = request.getParameter(“id”);它像一个魅力。