首页 > 解决方案 > HTTP 状态 406 - 不可接受 Spring mvc

问题描述

错误是 HTTP 状态 406 – 不可接受 根据请求中收到的主动协商标头字段,目标资源没有用户代理可接受的当前表示,并且服务器不愿意提供默认表示。

这是控制器代码

@RequestMapping(value="/welcomes", method = RequestMethod.GET, headers="Accept=application/json")
    public @ResponseBody List<UserBean> welcome(@ModelAttribute UserBean userBean)
    {
    List<UserBean> usernames = retrievedataservice.findAllUsers();

    return usernames;
    }

这是角度 js 代码

<body>
   <div data-ng-app="myApp" data-ng-controller="UserController">
   <table>
    <tr><th>user name</th><th>phone</th><th>email</th></tr>
     <tr data-ng-repeat="user in usernames">
     <td><span data-ng-bind="user.username"></span></td>
      <td><span data-ng-bind="user.phone"></span></td>
       <td><span data-ng-bind="user.email"></span></td>
       </tr>   
   </table>   
    </div>
    <script>
var app = angular.module('myApp', ['ngResource']);
app.controller('UserController', ['$scope', '$resource', function($scope,$resource){
    function fetchalluser()
    {
        $scope.usernames=$resource('http://localhost:8080/SpringAngular/welcomes').query(function(data)
                {
                    return data;
                });
    };
    $scope.refresh=function(){
        fetchalluser();
    };
}]);
</script>
</body>

我调试以下代码,Controller方法“welcome()”返回HTTP状态406-不可接受的错误。我认为 angular js 和 spring MVC 集成问题。

标签: angularjsspringspring-mvc

解决方案


我认为您在响应中缺少内容类型标头。可以这样添加

@RequestMapping(value="/welcomes", method = RequestMethod.GET, produces= MediaType.APPLICATION_JSON)
public @ResponseBody List<UserBean> welcome(@ModelAttribute UserBean userBean){
   ...
}

或者您也可以指定为字符串

produces="application/json"

推荐阅读