6

我是 Spring Framework 的新手,我已经使用该方法创建了一个控制器

@RequestMapping("/fetch/{contactId}")
public String getContact(@PathVariable("contactId") Long contactId,
        Map<String, Object> map, HttpServletRequest request,
        HttpServletResponse response) {

    Contact contact = contactService.get(contactId);
    map.put("contact", contact);
    return "contact";
}

当用户单击 jsp 上的链接时,调用此 fetch 方法以检索联系人详细信息

<td><a href="fetch/${contact.id}" class="edit">Edit</a></td>

然后它成功返回联系人对象并显示在屏幕上供用户更改和保存。我的jsp的form标签是这样的

<form:form method="post" action="add.html" commandName="contact"
        id="contact" onsubmit="return validateContact(this)">

现在的问题是,当我尝试将页面提交到同一控制器中的另一个方法时,URL 更改为

/myapp/app/contacts/fetch/add.html

而它应该是

/myapp/app/contacts/add.html

我知道有些事情我做的不对,但我到底是什么无法弄清楚。感谢你们中的任何人是否可以帮助我解决问题

谢谢 AA

4

3 回答 3

7

利用

<c:url var="addUrl" value="/contacts/add.html"/>
<form:form method="post" action="${addUrl}" commandName="contact"
      id="contact" onsubmit="return validateContact(this)">

一般来说,建议在每个应用程序内部使用,而不是直接在标签c:url中使用 url 。<a>

于 2012-09-14T06:49:05.177 回答
1
<form:form method="post" servletRelativeAction="/contacts/add" commandName="contact"
        id="contact" onsubmit="return validateContact(this)">

使用属性 servletRelativeAction 映射到所需的控制器操作。我假设您想要的控制器映射为“/contacts/add”而不是“add.html”。你想点击控制器而不是视图。

于 2014-03-12T10:46:27.063 回答
0

/contacts/add.htmlaction属性
更改 中使用

<form:form method="post" action="add.html" commandName="contact"
        id="contact" onsubmit="return validateContact(this)">

<form:form method="post" action="/contacts/add.html" commandName="contact"
        id="contact" onsubmit="return validateContact(this)">
于 2012-09-14T06:45:44.383 回答