我想在删除应用程序中的任何元素之前显示确认消息,我有:
<form:form name="formule" method="get" commandName="user"
onsubmit="confirmDelete('${pageContext.request.contextPath}/delete_element')">
<form:input type="hidden" path="id" name="id" />
<input type="submit" value="DELETE" />
</form:form>
功能:
function confirmDelete(delUrl) {
if (confirm("Are you sure ?")) {
document.location = delUrl;
}
}
,这是控制器:
@RequestMapping(value = "/delete_element", method = RequestMethod.GET)
public String getInfo(@ModelAttribute User user,@RequestParam("id") int id,ModelMap model) {
userservice.DeleteUser(id);
return "ViewName";
}
这就是我得到的:该功能的链接不会将我带到控制器,所以没有发生任何事情,我们可以说javascript发送的请求没有到达服务器 ..在Spring MVC中集成任何东西真的很难吗?!
答案 0 :(得分:5)
为什么需要篡改表单操作网址?
<c:url var="deleteUrl" value="/delete_element" />
<form:form method="get" commandName="user" action="${deleteUrl}"
onsubmit="return confirm('Are you sure?') ? true : false;">
另外,为什么需要绑定@ModelAttribute
和/或ModelMap
?您没有发送或设置任何用户数据,因此您可能只是忽略:
@RequestMapping(value = "delete_element", method = RequestMethod.GET)
public String getInfo(@RequestParam("id") int id) {
有点偏离主题:您不应该使用 HTTP GET
方法来修改请求。 http://www.w3.org/TR/REC-html40/interact/forms.html#submit-format
答案 1 :(得分:2)
而不是:
<form ... onsubmit="confirmDelete('${...}/delete_element')">
在return
的引用中将onsubmit
关键字添加到form
事件中:
<form ... onsubmit="return confirmDelete(this, '${...}/delete_element')">
^^^^^^---- added ^^^^--- added
此外,document.location
在某些浏览器中是只读的。最好使用window.location
。不要忘记添加return
,以便仅在需要时提交form
:
function confirmDelete(delForm, delUrl) { // <--- changed here
if (confirm("Are you sure ?")) {
delForm.action = delUrl; // <--- changed here
return true; // <--- changed here
}
return false; // <--- changed here
}