Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用angularjs向spring controller发送json时,浏览器控制台中出现不支持的媒体类型错误_Java_Javascript_Json_Angularjs_Spring Mvc - Fatal编程技术网

Java 使用angularjs向spring controller发送json时,浏览器控制台中出现不支持的媒体类型错误

Java 使用angularjs向spring controller发送json时,浏览器控制台中出现不支持的媒体类型错误,java,javascript,json,angularjs,spring-mvc,Java,Javascript,Json,Angularjs,Spring Mvc,这是我的控制器功能 @RequestMapping(value = "/logInChecker", method = RequestMethod.POST, consumes = {"application/json"}) public @ResponseBody String logInCheckerFn(@RequestBody UserLogData userLogData){ Integer userAuthFlag = goAnalyserModel.chec

这是我的控制器功能

@RequestMapping(value = "/logInChecker", method = RequestMethod.POST, consumes = {"application/json"})
    public @ResponseBody String logInCheckerFn(@RequestBody UserLogData userLogData){
        Integer userAuthFlag = goAnalyserModel.checkUserAuth(userLogData);
        return userAuthFlag.toString();
    }
我的豆子课

公共类UserLogData{

private String userName;
private String password;

public String getUserName() {
    return userName;
}
public void setUserName(String userName) {
    this.userName = userName;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
}

带有angularjs函数的我的html文件

<!DOCTYPE html>
<html lang="en" ng-app="nameAppIndexPage">
   <head>
      <meta charset="utf-8">
      <title>Go Analyser - Login</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta name="description" content="">
      <meta name="author" content="">
      <!-- Le styles -->
      <link href="assets/css/bootstrap.css" rel="stylesheet">
      <style type="text/css">
         body {
         padding-top: 60px;
         padding-bottom: 40px;
         }
      </style>
      <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
   </head>
   <body ng-controller="nameController">
      <div class="navbar navbar-inverse navbar-fixed-top">
         <div class="navbar-inner">
            <div class="container">
               <a class="brand" href="#">Go Analyser</a>
            </div>
         </div>
      </div>
      <div class="container">
         <!-- Example row of columns -->
         <div class="row">
           <div class=" margin_alignment"></div>
            <div class="span4"></div>
            <div class="span4">
               <form class="form-signin">
                  <label for="exampleInputEmail1">Email address</label>
                  <input type="text" class="input-block-level" placeholder="Email address" ng-model="userName">
                  <label for="exampleInputPassword1">Password</label>
                  <input type="password" class="input-block-level" placeholder="Password" ng-model="password">
                  <!-- <center><button class="btn btn-large" type="submit">Login</button></center>-->

                  <button type="submit" ng-click='checkLogin()'>login</button>
               </form>

            </div>
            <div class="span4"></div>
         </div>
         <div class="hr_space"></div>
         <footer>
         </footer>
      </div>
      <script src="assets/js/jquery.js"></script>
      <script src="assets/js/angular.js"></script>


      <script>
                    var myApp = angular.module('nameAppIndexPage',[]);
                    myApp.controller('nameController',function($http,$scope){
                        $scope.checkLogin = function(){
                            alert("inside checklogin()");

                            var userName = $scope.userName;
                            var password = $scope.password;

                            var dataToSend = {
                                "userName" : userName,
                                "password" : password   
                            };
                            console.log(dataToSend);
                            alert("after data to send");  
                            $http.post('logInChecker',dataToSend).success(function(data){
                                if(data == 1){
                                    alert("inside loginSuccess");
                                }else{
                                    alert("username and password mismatch");
                                    //write function to show incorrect password
                                }
                            }).error(function(data){
                                alert("error in post" + JSON.stringify({data: data}));
                            });
                        }
                    });
               </script>
   </body>
</html>

Go Analyzer-登录
身体{
填充顶部:60px;
填充底部:40px;
}
电子邮件地址
密码
登录
var myApp=angular.module('nameAppIndexPage',[]);
myApp.controller('nameController',函数($http,$scope){
$scope.checkLogin=function(){
警报(“内部检查登录()”;
var userName=$scope.userName;
var password=$scope.password;
var dataToSend={
“用户名”:用户名,
“密码”:密码
};
console.log(dataToSend);
警报(“发送数据后”);
$http.post('logInChecker',dataToSend).success(函数(数据){
如果(数据==1){
警报(“内部登录成功”);
}否则{
警报(“用户名和密码不匹配”);
//写入函数以显示错误的密码
}
}).错误(函数(数据){
警报(“post中的错误”+JSON.stringify({data:data}));
});
}
});

我在浏览器控制台中不断收到不受支持的媒体错误。angularjs函数没有将请求传递给spring控制器。但一切似乎都很好

当请求无法转换为java对象或java对象无法转换为响应时,会出现此消息

正如你所解释的,你有前一种情况。您应该检查的几件事:

  • 检查servlet配置中是否有

  • 检查类路径上是否存在jackson依赖项,对于spring 4.x,您应该使用jackson 2.x版本,对于spring 3.x,您应该使用jackson 1.9

  • 为了确保您的响应也被正确地转换,除了具有正确的依赖项之外,您还应该确保

  • 接收头随请求一起发送,其值为
    application/json
    ,或者处理程序方法的RequestMapping注释具有属性
    products={“application/json”}
  • 将@JsonProperty(“**”)(*属性名称)添加到bean类中。签入浏览器的开发者工具类型的JSON post消息