3

我可以将 spring 表单标签库与 Ajax 结合使用吗?我无法在控制器内检索表单输入参数。它们始终为null

实际上有一个逻辑是表单永远不会提交。但是随后我只能将字符串发送到我的控制器,而不是像映射到 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>

调用Spring 控制器的 Ajax 函数

function clinicAjax(){
    alert('Inside Clinic Ajax Method');
    $.ajax({
        url: 'clinicAjax',
        type: 'POST',
        success: alert('Ajax Successful')
    });
}

弹簧控制器方法:

@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";
    }

它在 System.out.println() 语句中总是为空。

4

1 回答 1

5

问题是您没有在任何地方序列化您的表单,因此它不会被发送到服务器。

将您的 javascript 代码更改为:

function clinicAjax(){
    alert('Inside Clinic Ajax Method');
    $.ajax({
        url: 'clinicAjax',
        data: yourFormElement.serialize(); /* i.e. $('#formId').serialize(); */
        type: 'POST',
        success: alert('Ajax Successful')
    });
}

yourFormElement用代表您的表单的 jQuery 对象替换它应该可以工作。

于 2012-07-23T13:56:25.573 回答