Bat*_*man 3 ajax spring spring-mvc
我可以将spring form标记库与Ajax结合使用吗?我无法检索控制器内的表单输入参数.它们总是空的.
实际上有一个逻辑表明表单永远不会提交.但是后来我只能将字符串发送到我的控制器而不是一个对象,因为表单提交被映射到Spring commandBean.
表单接受commandBean
<form:form method="POST" commandName="clinicBean">
Clinic Name: <form:input path="name" type="text" /><br/>
Clinic Address: <form:input path="address" type="text"/><br/>
<input type="button" value="Create Clinic" onclick="clinicAjax()"/>
</form:form>
Run Code Online (Sandbox Code Playgroud)
调用Spring控制器的 Ajax函数
function clinicAjax(){
alert('Inside Clinic Ajax Method');
$.ajax({
url: 'clinicAjax',
type: 'POST',
success: alert('Ajax Successful')
});
}
Run Code Online (Sandbox Code Playgroud)
弹簧控制器方法:
@RequestMapping(value="clinicAjax",method=RequestMethod.POST)
public @ResponseBody String createClinic(@ModelAttribute("clinicBean") Clinic clinic){
System.out.println("Ajax call successful");
System.out.println(clinic);
System.out.println(clinic.getName());
System.out.println(clinic.getAddress());
return "SUCCESS";
}
Run Code Online (Sandbox Code Playgroud)
它在System.out.println()语句中始终为null.
问题是你没有在任何地方序列化你的表单,所以它没有被发送到服务器.
将您的javascript代码更改为:
function clinicAjax(){
alert('Inside Clinic Ajax Method');
$.ajax({
url: 'clinicAjax',
data: yourFormElement.serialize(); /* i.e. $('#formId').serialize(); */
type: 'POST',
success: alert('Ajax Successful')
});
}
Run Code Online (Sandbox Code Playgroud)
替换yourFormElement为表示您的表单的jQuery对象,它应该工作.