как отправить данные из контроллера пружины в контроллер angularjs с ответом данных - PullRequest
0 голосов
/ 03 декабря 2018

код контроллера

@RequestMapping(value="/welcomes", method = RequestMethod.GET, produces="MediaType.application/json")
    public @ResponseBody ModelAndView welcome(@ModelAttribute UserBean userBean)
    {
        List<UserBean> usernames=new ArrayList<UserBean>();
        usernames = retrievedataservice.findAllUsers(userBean);
        System.out.println(usernames.size());
        return new ModelAndView("welcomes", "usernames", usernames);
    }

угловой код js

<script>
var app = angular.module('myApp', []);
app.controller('UserController', function($scope, $http, $location){
    $scope.usernames=[];
        var url = $location.absUrl() + "http://localhost:8080/SpringAngular/welcomes";
        $http.get(url).then(function (response) 
        {
            $scope.usernames = response.records;
        },function error(response) 
        {
            $scope.postResultMessage = "Error with status: " +  response.statusText;
        });
});
</script>
<div data-ng-app="myApp" data-ng-controller="UserController">
   <table border="1" width="50%" height="50%"> 
    <tr><th>user_name</th><th>phone</th><th>email</th></tr>
     <tr data-ng-repeat="user in usernames">
     <td>{{user.username}}</td>
      <td>{{user.phone}}</td>
       <td>{{user.email}}</td>
       </tr>   
   </table>   

Фактически контроллер возвращает список данных, но угловой js не может получить данные.Возвращает нулевые значения.он не может интегрироваться с угловым JS и контроллером.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Ваш контроллер не делает то, что вы ожидаете: аннотирование метода с помощью @ResponseBody приведет к переносу возвращаемого значения вашего метода в тело ответа, также атрибут produces неверен.попробуйте что-то вроде этого:

@RequestMapping(value="/welcomes", method = RequestMethod.GET, produces="application/json")
    public @ResponseBody Object welcome(@ModelAttribute UserBean userBean)
    {
        List<UserBean> usernames=new ArrayList<UserBean>();
        usernames = retrievedataservice.findAllUsers(userBean);
        System.out.println(usernames.size());
        return usernames; // you can also do ResponseEntity.ok().body(usernames)
    }
0 голосов
/ 03 декабря 2018

Это не будет работать, поскольку вы аннотировали метод как @ResponseBody, поэтому он будет отправлять ответ в теле, но вы возвращаете modelandview, который, очевидно, не будет работать.

Angular не должен ничего делать с modelandview, ноон ожидает ответа json, поэтому он будет отображаться.

Так что измените метод, как показано ниже, отправив List<UserBean> в ответ.

@RequestMapping(value="/welcomes", method = RequestMethod.GET, produces="MediaType.application/json")
    public @ResponseBody List<UserBean> welcome(UserBean userBean)
    {
        List<UserBean> usernames=new ArrayList<UserBean>();
        usernames = retrievedataservice.findAllUsers(userBean);
        System.out.println(usernames.size());
        return usernames;
    }

Выше указанного изменения достаточно для правильного возврата ответа вызывающей среде.но вам нужно убедиться, что вы правильно нажали на метод.

Как подсказывает @Dmitry var url = $location.absUrl() + "http://localhost:8080/SpringAngular/welcomes";, возможно, он не прав.

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