2

私は初めてSpringです。Google での以前の検索から、 @RequestBodyを使用してJSONデータをに送信でき、コントローラーでデータを取得できることがわかりました。Spring Controller

しかし、 を使用する@RequestBodyと、コントローラーへのリクエストが許可されません。

function sendJSON(){

    var jsonData = {"name":"XXX","age":"20","hobby":"TV"};
    /alert("json Data : \n\n\n"+jsonData);

    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: contexPath + "/sender.html",
        //dataType: "html",
        //contentType: "application/x-www-form-urlencoded; charset=utf-8",
        contentType: "application/json"
        data : JSON.stringify(jsonData),
        success: function(data, textStatus ){
            alert("success");
            $("#result").html(data.name+"data.age+" "+data.hobby);  
        },
        error: function(xhr, textStatus, errorThrown){
            //alert('request failed'+errorThrown);
        }
    });
}

私のcontroller意志は、

@RequestMapping(value = "sender.html", method=RequestMethod.POST)
public @ResponseBody Person sendMessage(@RequestBody Persons person){
    System.out.println("Test..........");
    System.out.println(person.getName()+ " "+person.getAge()+" "+person.getHobby()+"\n");
    return persons; 
}

しかし、私のリクエストはブロックされます。

に一致するに正しい を送信していjson dataますか?controllerjava bean

私たちのスタックユーザーが私を助けてくれることを願っています.

4

6 に答える 6

1

コードに複数のエラーがあります。私はあなたがこの種のものを使用していると仮定しましたPerson:

public class Person {
  private int age;
  private String hobby;
  private String name;
  /* omitted getters/setters */
}

コントローラーに何を返してもらいたいのか、コードからは少し不明です-1人またはそれらのリスト。1人を返すように変更しました:

  @RequestMapping(value = "sender.html", method = RequestMethod.POST)
  public @ResponseBody
  Person sendMessage(@RequestBody Person person) {
    System.out.println("Test..........");
    System.out.println(person.getName() + " " + person.getAge() + " " + person.getHobby() + "\n");
    return person;
  }

そして今、javascript。contextPath の代わりに、スラッシュを開始せずに url を使用できます。また、カンマの欠落や引用符の誤りもありました。修正版は次のとおりです。

var jsonData = {
    "name" : "XXX",
    "age" : "20",
    "hobby" : "TV"
};

$.ajax({
    type : 'POST',
    dataType : 'json',
    url : "sender.html",
    contentType : "application/json",
    data : JSON.stringify(jsonData),
    success : function(data, textStatus) {
        alert("success");
        $("#result").html(data.name + data.age + data.hobby);
    }
});
于 2013-08-01T14:26:00.573 に答える
1

JSON データと一致する Java Bean クラス名を確認してください。

于 2013-08-01T12:46:29.557 に答える