Эта ошибка сильно меня проверяет. Может ли кто-нибудь помочь, что я сделал не так?

У меня есть скрипт, который содержит значение нескольких параметров в формате JSON.

var mpdApp = angular.module('mpdApp', ['ngAnimate',
    'ngSanitize', 'ui.bootstrap'
]);

mpdApp
    .controller(
        'mpdController',
        [
            '$scope',
            '$rootScope',
            '$http',
            '$window',

            function($scope, $rootScope, $http, $window) {
                $scope.doValidation = function() {

                    var mpdData = {
                        'mpdPolicyNumber': $scope.mpdPolicyNumber,
                        'mpdFirstName': $scope.mpdFirstName,
                        'mpdLastName': $scope.mpdLastName,
                        'mpdAddress': $scope.mpdAddress,
                        'mpdPhoneNumber': $scope.mpdPhoneNumber
                    };

                    console.log(mpdData);

                    $http({
                            'url': '/mpdValidate',
                            'method': 'POST',
                            'headers': {
                                'Content-Type': 'application/json'
                            },
                            'params': mpdData
                        })
                        .then(
                            function(response) {
                                $rootScope.resultMpdData = response.data;
                            });
                };
            }
        ]);

Когда я пытаюсь передать это своему весеннему контроллеру mvc через POST,

метод пружинного контроллера MVC :

@PostMapping(path = "/mpdValidate", produces = "application/json")
    @ResponseBody
    public List<MPDValidationOutputVO> mpdValidate(@RequestParam("mpdPolicyNumber") String mpdPolicyNumber,
            @RequestParam("mpdFirstName") String mpdFirstName, @RequestParam("mpdLastName") String mpdLastName,
            @RequestParam("mpdAddress") String mpdAddress, @RequestParam("mpdPhoneNumber") String mpdPhoneNumber)
            throws JsonParseException, JsonMappingException, IOException {

        System.out.println("*************");
        MPDValidationInputVO mpdValidationInput = new MPDValidationInputVO();
        List<MPDValidationOutputVO> mpdValidationOutput = mpdValidationService.mpdValidate(mpdValidationInput);
        return mpdValidationOutput;
    }

Я получаю эту ошибку. error

Журнал консоли :

{mpdPolicyNumber: "werwer", mpdFirstName: "czxc", mpdLastName: "werwe", mpdAddress: "ghhdf", mpdPhoneNumber: "asaa"}

Ваша помощь приветствуется.

1
Mike 24 Сен 2018 в 13:55

2 ответа

Лучший ответ

Попробуйте использовать этот вариант

$http({
        url: 'request-url',
        method: "POST",
        data: { 'message' : message }
    })

Поскольку url уже является параметром, вы не должны заключать его в одинарные кавычки.

2
Shubh 24 Сен 2018 в 11:24

Produce = "application / json" будет обрабатываться, только если заголовок Accept равен "application / json"

В вашем методе слишком много параметров, отсутствует только 1 параметр, это приведет к ошибке 404.

Вы можете добавить значение по умолчанию или required = false, если параметр не отображается. это поможет вам предотвратить ошибку 404.

@PostMapping(path = "/mpdValidate", produces = "application/json")
    @ResponseBody
    public List<MPDValidationOutputVO> mpdValidate(@RequestParam("mpdPolicyNumber") String mpdPolicyNumber,
            @RequestParam("mpdFirstName") String mpdFirstName, @RequestParam("mpdLastName") String mpdLastName,
            @RequestParam("mpdAddress") String mpdAddress, @RequestParam("mpdPhoneNumber") String mpdPhoneNumber)
            throws JsonParseException, JsonMappingException, IOException {

        System.out.println("*************");
        MPDValidationInputVO mpdValidationInput = new MPDValidationInputVO();
        List<MPDValidationOutputVO> mpdValidationOutput = mpdValidationService.mpdValidate(mpdValidationInput);
        return mpdValidationOutput;
    }
0
huy 24 Сен 2018 в 11:26