2016-08-05 1 views
0

Jquery Ajax Callを使用して、その名前のmodelパラメータに何も渡されない場合、Model Parameterのデータ型は何ですか?Jquery Ajaxコールでデータが渡されないときの春のModel Parameterのデータ型は何ですか?

は、以下のjQueryのAjax POST操作考えてみましょう:あなたの例によると

$.ajax({ 
    url: url, 
    data: {'A':'a','B':'b'}, 
    cache: false, 
    dataType: "json", 
    type: "POST", 
    success: function(data){ 
     if(data.success==true){ 
      alert('success'); 
     }else if(data.success==false){ 
      alert('Failed'); 
     } 
    } 
}); 

と、次の春のアノテーションベースのコントローラの定義

@RequestMapping(value = { "dummy" }, method = RequestMethod.POST) 
    public @ResponseBody HashMap<Object, Object> createDiagram(@ModelAttribute(value = "A") Object a,@ModelAttribute(value = "B") Object b,@ModelAttribute(value = "C") Object c) 
    { 
boolean object=(c instanceof Object); // returns true; 
boolean string=(c instanceof String); //returns false 

//TODO: Need to check if c is null or if the value of 'C' was actually passed in Ajax Call 
} 

答えて

0

を、あなたは匿名javascriptオブジェクトを送信しようとしているあなたサーバーでPOSTメソッドを使用します。実際@ModelAttribute注釈を使用してデータをバインドするために

、リクエストがコントローラに来るとき、あなたは、次の手順に必要:あなたのHTML内

から、あなたが入力内name属性を使用する必要がありますタグ、テキストエリアタグ、およびその他のフォームタグが含まれます。フォーム内の各「要素」タグは、その名前属性を使用してバインドしようとしているオブジェクト内のフィールドと一致する必要があります。例えば

のは、あなたがクラスUser.javaを持って、そしてあなたがそれにデータをバインドしようとしているとしましょう:

public class User { 

    private String firstName; 

    private String lastName; 

    private String email; 
} 

ので、あなたのフォームはのは、と3個の入力タグを言わせて含める必要があります一致するname属性:今すぐ

<input type="text" name="firstName" /> 
<input type="text" name="lastName" /> 
<input type="text" name="email" /> 

、あなたが実際にこのような場所を取ることができますバインディング:

@RequestMapping(value = "/home", method = RequestMethod.POST) 
public String goHome(@ModelAttribute User) 
{ 
} 

これはバインディングの問題でした。

ajaxの場合は、まずHTMLフォームのデータを取得する必要があります。そして、あなたはあなたのHTMLフォームであるmyFormのIDを持っているとしましょう:

var myData = $("#myForm").serialize(); 

今、データの下であなたはこのように、MYDATAを送信する必要があります。

$.ajax({ 
    url: url, 
    data: myData, 
    cache: false, 
    dataType: "json", 
    type: "POST", 
success: function(data){ 
    if(data.success==true){ 
     alert('success'); 
    }else if(data.success==false){ 
     alert('Failed'); 
    } 
} 

を});

return false; 

URLは、サーバーへの完全なHTTPアドレスである必要があり、このような何か:

http://localhost:8080/your_app/your_route

はすぐに偽の、または他の値を返すためにjqueryのAJAX呼び出しの後に忘れてはいけません。それはajax呼び出しを完了するための適切な方法です。

ajax成功メソッドは、Springのコントローラからの応答として(より正確には、ディスパッチャサーブレットからの)あらゆる種類のテキストを期待しています。

コントローラ内で@ResponseBodyアノテーションを使用することを忘れないでください。ディスパッチャーサーブレットはビューを解決しようとしませんが、HTMLボディの一部としてメソッドの値を返します。

返される文字列やJSONがあれば、HTTPレスポンスの本文で送信されます。

関連する問題