我是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 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
答案 0 :(得分: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
,而不是直接使用<a>
标记中的网址。
答案 1 :(得分:0)
在/contacts/add.html
属性中使用action
改变
<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)">
答案 2 :(得分:0)
<form:form method="post" servletRelativeAction="/contacts/add" commandName="contact"
id="contact" onsubmit="return validateContact(this)">
使用属性servletRelativeAction映射到所需的控制器操作。我假设您所需的控制器被映射为&#39; / contacts / add&#39;不是&#39; add.html&#39;。你想要控制器而不是视图。