AngularJS и Spring Rest

Я использую AngularJS для публикации простой формы в API, написанном с помощью Spring boot и Rest. Каждый класс снабжен аннотацией @RestController.

Мой метод Spring Controller выглядит следующим образом:

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<String> create(@Valid @RequestBody Modality modality) {
      mService.save(modality);

      return ResponseEntity.status(HttpStatus.CREATED).body("");
}

HTML-форма:

<form ng-submit="submit()">
    <table>
        <tr>
            <td>Modality:.</td>
            <td><input type="text" name="modality" id="modality" ng-model="Modality.name" value="" /></td>
        </tr>
        <tr>
            <td>Active:.</td>
            <td><input type="checkbox" name="active" id="active" ng-model="Modality.active" value="" /></td>
        </tr>

        <tr>
            <td colspan="2">
                <button type="submit">Enviar</button> &nbsp;
                <input type="reset" value="Reset" /> &nbsp;
            </td>
        </tr>
    </table>
</form>

Сообщение через Angular:

$scope.Modality = {id: null, name: '', active: ''}
$scope.submit = function() {
        $http({
            method: 'POST',
            headers : { 'Content-Type': 'application/json'},
            url: "http://localhost:8080/v1/modality",
            data: $scope.modality
        }).success(function(data) {
                console.log($scope.modality);
        });
}

Когда я использую angular для отправки формы, я вижу, что объект модальности заполняется данными формы, но когда он достигает контроллера Spring, объект модальности имеет все свои атрибуты нулевыми, и из-за этого я получаю следующую ошибку :

{"status":400, "error":"Badequest",
"exception":"org.springframework.http.converter.HttpMessageNotReadableException","message":"Required request body is missing: 
public org.springframework.http.ResponseEntity<java.lang.String>
cc.sporthub.controllers.ModalityController.create(cc.sporthub.models.Modality","path":"/v1/modality"}

Что я делаю не так?


person Eduardo Santos    schedule 25.11.2015    source источник
comment
Я думаю, что ваша проблема вызвана тем, что имя переменной использует данные: $scope.Modality вместо данных: $scope.modality   -  person tcharaf    schedule 25.11.2015
comment
Попробуйте отправить JSON: data: JSON.stringify($scope.modality);   -  person lux    schedule 25.11.2015
comment
Я уже пробовал, но получил ту же ошибку....   -  person Eduardo Santos    schedule 25.11.2015
comment
Объект, содержащий значение, — scope.Modality. Но вы отправляете scope.modality.   -  person JB Nizet    schedule 25.11.2015
comment
Ты прав... глупая ошибка!   -  person Eduardo Santos    schedule 25.11.2015


Ответы (1)


Я думаю, это потому, что вы используете scope.modality в нижнем регистре.

Переменные Javascript чувствительны к регистру.

http://www.w3schools.com/js/js_variables.asp

person reos    schedule 25.11.2015