Metoda POST w AngularJS

0

Zerknijcie na mój problem. Mam prosta tabele w html:

 
<div id="showTaskDiv">
   <table>
            <tr>
            <th>Id</th>
            <th>Wykonano</th>
            </tr>
   <tbody>
            <tr data-ng-repeat="task in taskList  ">
            <td data-ng-model="taskId">{{task.id}}</td>
            <td data-ng-model="taskDone">{{task.done}}</td>
  </tbody>
  </table>

<button id="pola" data-ng-click="setDone()" style="background-color: #4297d7;">Usuń</button>

i funkcje :

$scope.setDone = function(){
var data = 'taskId='+$scope.taskId+'&done='+$scope.taskDone;	
$http({
    method: 'POST',
    url: 'task/setDone',
    data: data,
    headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
}).
success(function(data, status, headers, config) {
    
    console.log(data);
}).
error(function(data, status, headers, config) {
   
    console.error(data);
});
};

 

Metoda w konrolerze wygląda tak:

 
@RequestMapping(value="task/setDone",method=RequestMethod.POST)
public Task saveTaskStatus(
@RequestParam int taskId,
@RequestParam boolean done){

	Task saveTaskStatus = taskService.saveTaskStatus(taskId, done);	
	return saveTaskStatus;
}

Po kliknieciu na przycisk dostaje błąd:

 
2015-09-21 13:41:18.901  WARN 7540 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver :
Handler execution resulted in exception: Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: 
For input string: "undefined"

Koledzy jak poprawnie odpalić tego POSTA ?

0

For input string: "undefined"

0

Ja zrobiłbym to tak:

var data = 'taskId='+$scope.taskId+'&done='+$scope.taskDone; 

Zamieniam na:

var dataObj = new Object();
dataObj .taskId = $scope.taskId;
dataObj .taskDone = $scope.taskDone;

Po stronie serwera:

@RequestMapping(value="task/setDone",method=RequestMethod.POST)
public Task saveTaskStatus(@RequestBody Data dataObj ){
 
    Task saveTaskStatus = taskService.saveTaskStatus(dataObj.getTaskId(), dataObj.getTaskDone());    
    return saveTaskStatus;
}

Oczywiście musisz sobie stworzyć javovy obiekt Data który ma pola int/long i boolean. Nie lepiej zrobić to getem zamiast posta?

1 użytkowników online, w tym zalogowanych: 0, gości: 1