Ich versuche, eine Spring MVC-Anwendung zu erstellen und AJAX-Aufruf beim Klicken auf einen Absenden Button zu senden.Kann JSON-String nicht an ein Objekt im Controller in Spring MVC gebunden werden?
Unten ist die Controller-Methode:
@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" ;
}
Aber ich bin immer alle Attribute in Task
Objekt als null.
Allerdings kann ich Json als String im Controller empfangen und über Gson api in Object konvertieren.
@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" ;
}
Unten ist der Ajax-Code:
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);
}
});
}
Ich habe bereits die unter 2 Abhängigkeit in pom.xml hinzugefügt.
<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>
Dies löst nicht mein Problem. Stört es dich, wenn ich dir ein kleines Zip-Projekt mit meinem Code gebe? Ich werde dir wirklich dankbar sein – Vicky