3

Spring Form タグ ライブラリを 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() ステートメントでは常にnullになります。

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 に答える