获取当前页面的附加URL值 - Spring

时间:2015-08-20 18:47:19

标签: java spring jsp spring-mvc

我正在使用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。

1 个答案:

答案 0 :(得分:0)

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