0

我想在删除应用程序中的任何元素之前显示一条确认消息,我有:

<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中集成任何东西真的很难吗像那样 ?!

4

2 回答 2

5

为什么需要篡改表单操作 URL?

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

还有一点题外话:你不应该使用HTTPGET方法来修改请求。 http://www.w3.org/TR/REC-html40/interact/forms.html#submit-format

于 2013-06-06T19:32:07.773 回答
2

代替:

<form ... onsubmit="confirmDelete('${...}/delete_element')">

沿着对 的引用将return关键字添加到事件中:onsubmitform

<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
}
于 2013-06-06T18:36:23.510 回答