Создание маршрута между серверной частью Java (Spring) и клиентской частью AngularJS - PullRequest
0 голосов
/ 17 февраля 2019

Я новичок в Spring и AngularJS и пытаюсь проложить маршрут от моего бэкенда до моего внешнего контроллера.Мой конец Spring:

@Controller
@RequestMapping("test1")
public class TestController {
    public TestController() {}

    @RequestMapping(value="test2", method=RequestMethod.GET, produces= MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    @Transactional("defaultTransactionManager")
    public String getSearch() {
        System.out.println("It reaches here!");
        return ("Test Success!");
    }
}

Мой внешний интерфейс AngularJS:

this.testingHTTP = (vm) => {
      $http({
        method: 'GET',
        url:SERVICE_URL + '/test1/test2',
        headers: {
          'Content-Type': 'application/json'
        },

      }).then(function successCallback(response) {
        vm.testerDiv = response;
      }, function errorCallback(response) {
        console.log(response, 'Test failed');
      });
    };

Когда я запускаю функцию внешнего интерфейса, "Это достигается здесь!"появляется в моей бэкэнд-консоли, и это появляется в моей консоли браузера:

TypeError: Невозможно прочитать свойство 'message' of undefined в handleResponseError (defaultServices.js: 48) в processQueue (angular.js: 17330)) в angular.js: 17378 в Scope. $ digest (angular.js: 18515) в Scope. $ apply (angular.js: 18903) в done (angular.js: 12775) в completeRequest (angular.js: 13032) вXMLHttpRequest.requestLoaded (angular.js: 12937) «Тест не пройден»

Я знаю, что URL-адрес правильный;возможно, это что-то касается моего Content-Type?Чего мне не хватает?

1 Ответ

0 голосов
/ 17 февраля 2019

Angular JS ожидает, что ответ будет JSON по умолчанию.Поэтому вам нужно вернуть ответ в виде строки JSON из Spring Controller, как показано ниже

@Controller
@RequestMapping("test1")
public class TestController {
    public TestController() {}

    @RequestMapping(value="test2", method=RequestMethod.GET, produces= MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    @Transactional("defaultTransactionManager")
    public String getSearch() {
        System.out.println("It reaches here!");
        return  "{\"resp\":\"Test Success\"}";
    }
}

. И в вашем успехе в angularjs вы должны сделать response.resp, чтобы получить Test Success значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...