Java Servlet не возвращает объект на угловые $ http.success Метод

StackOverflow https://stackoverflow.com//questions/22040735

Вопрос

Я изучаю Angular.js. Я пытался искать множество существующих вопросов, но не смог найти соответствующий вопрос или ответ.

Я посылаю запрос на сервлете Java и ожидаю от него объекта. Вот угловая $ http Get запрос

        $http({
            method:'GET',
            url : '/JSONWebApp/json/?fqn=' + $scope.fqn
        }).
            success(function(data, status, header, config){
                console.log('Success');
                console.log("data - "+data);
                console.log("status - " + status);
                console.log("header - " + header);
                console.log("config - " + config);
            }).
            error(function(data, status, header, config){
                console.log('Error');
            });
.

на Java Servlet, вот что я пишу в методе Doget

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       System.out.println("Incoming Request URI : " + request.getRequestURI());

   **User user = new User();
         request.setAttribute("user", user);
   RequestDispatcher view = request.getRequestDispatcher("/html/index.html");
   view.forward(request, response);**
}
.

Когда ответ вернутся с этого сервлета, он идет к успеху $ http Service в угловой стороне. Откуда я получу объект пользователя, который я отправил с сервера.

Когда я добавляю console.log для печати данных, он печатает содержимое /html/index.html, где я пересылаю.

На основании моих исследований, мой угловой код правильный, но я не устанавливаю вещи правильно в Java Servlet. (Делает ли эту помощь - Как получить доступ к значениям возврата JSON в Angular.js Action Success Callback )

Спасибо заранее.

Это было полезно?

Решение

Вам нужно сериализовать свой пользовательский объект в строку JSON и поместите это в тело ответа.Библиотека, такая как Джексон, может помочь, но прежде чем добавить это и запутать себя, просто сериализуйте его в json String.Не забудьте установить заголовок типа содержимого.

Другие советы

  1. Добавьте следующую строку на объект $ HTTP: Заголовки: {'Content-Type': «Приложение / X-www-urlencoded»}

  2. Используйте метод пост вместо того, чтобы получить Метод: «Post»

  3. Так в конце концов, мы придумали что-то подобное:

    myData = {"name": "zezinho", "pass": "123xxx"};
    
    $http({
      method: 'POST',
      url: 'Login',
      data: myData,
      headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function (data) {
      alert(data);
    }).error(function () {
      alert("login error");
    });
    
    .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top