所以我有一个看起来很简单但无法弄清楚该怎么做的问题。 我正在尝试调用JavaScript方法usign jsp形式,如下所示:
<div class="form_user">
<form:form id="coolForm" onSubmit="return functionToCall()" modelAttribute="userModel">
<form:input type="hidden" id="tokenForgot" name="tokenForgot" path="tokenForgot" />
<form:input type="password" class="form-control" name="Password" path="Password" id="pwd" placeholder="password"/>
<form:input type="password" class="form-control" name="password2" path="password2" id="confirmpwd" placeholder="Confirm password"/>
<button id="coolButton" >Submit</button>
</form:form>
</div>
该表单转到JS方法 functionToCall 并执行所需的操作(最后将显示一个对话框,然后进行重定向)。事情是,在JS方法之后,它在浏览器上显示错误,提示 不支持POST方法 。显然,JSP默认情况下会添加一个 action 和 method 属性。
我的问题是,有没有办法阻止JSP执行此操作?或任何解决方法?我可以只使用<form>
来完成,但是我需要JSP提供的modelAttribute。
编辑1: 这是JS方法:
function functionToCall() {
var userForm = $("#coolForm").serialize();
var someService = new SomeService();
var result = someService.functionToCallPOST(userForm );
if (result.worked) {
$("#dialogUser").dialog("open");
$("#dialogText").text("Congratulations");
}
else {
if (result.mensaje == "ERROR") {
$("#dialogUser").dialog("open");
$("#dialogUser").text("Error");
}
else {
$("#dialogWarning").dialog("open");
$("#dialogoTextW").text("enter your data again");
}
}
}
functionToCallPOST 方法只是直接AJAX调用控制器
答案 0 :(得分:0)
您的函数functionToCall()不返回任何内容,因此您的表单将被提交。尝试return false
function functionToCall() {
var userForm = $("#coolForm").serialize();
var someService = new SomeService();
var result = someService.functionToCallPOST(userForm );
if (result.worked) {
$("#dialogUser").dialog("open");
$("#dialogText").text("Congratulations");
return true;
}
else {
if (result.mensaje == "ERROR") {
$("#dialogUser").dialog("open");
$("#dialogUser").text("Error");
}
else {
$("#dialogWarning").dialog("open");
$("#dialogoTextW").text("enter your data again");
}
}
return false;
}