私はSpring MVCアプリケーションを作成し、送信ボタンをクリックしてAjaxコールを送信しようとしています。以下はSpring MVCのjson stringをコントローラのオブジェクトにバインドできませんか?
は、コントローラのメソッドです:
@ResponseBody
@RequestMapping(value = "/addTask" , method=RequestMethod.POST)
public String addTask(@ModelAttribute(value="task") Task task, BindingResult result, Model model){
String returnText = null;
System.out.println(task.getDescription()); // printing null
return "success" ;
}
しかし、私はヌルとしてTask
オブジェクト内のすべての属性を取得しています。
しかし私はコントローラでStringとしてjsonを受け取り、Gson APIを介してObjectに変換することができます。私はすでにのpom.xmlで、以下の2依存関係を追加した
function doAjaxPost() {
var id = $('#id').val();
var desc = $('#description').val();
var dueDate = $('#dueDate').val();
var obj = { "id" : id, "description" : desc, "dueDate": dueDate};
console.log(obj)
$.ajax({
type : "POST",
contentType : "application/json",
url : "/spring/addTask",
data : JSON.stringify(obj),
dataType : 'json',
timeout : 100000,
success: function(response){
$('#description').val('');
$('#dueDate').val('');
$('#id').val('');
},
error: function(e){
alert('Error: ' + e);
console.log(e);
}
});
}
:
@ResponseBody
@RequestMapping(value = "/addTask" , method=RequestMethod.POST)
public String addTask(@RequestBody String task){
String returnText = null;
Gson gson = new Gson();
Task rr = gson.fromJson(task, Task.class);
taskList.add(rr);
return "success" ;
}
以下はAjaxコードです。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.3</version>
</dependency>
これは私の問題を解決するものではありません。あなたは私のコードを持つ小さなzipプロジェクトをあなたに教えてもらえますか?私はあなたに本当に嬉しいよ – Vicky