Spring-MVC应用程序中的Javascript确认消息

时间:2013-06-06 17:22:40

标签: javascript spring-mvc

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

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

2 个答案:

答案 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
}