原始服务器拒绝为请求提供服务,因为有效负载的格式不受目标资源上此方法的支持。

控制器代码

@RestController
public class UserController
{
    @Autowired
    public IretrieveService retrieveService;

    @RequestMapping(value="/register", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public ModelAndView doRegister(@RequestBody UserBean userBean,BindingResult result)
    {
        ModelAndView view = new ModelAndView("index");
        System.out.println("username "+userBean.getUsername());
        if(!result.hasFieldErrors())
        {
            if(retrieveService.insert(userBean) != null)
            {
                System.out.println("done");
            }

        }
        return view;

    }
}


Angular JS代码

<script type="text/javascript">
var app = angular.module('myApp', []);
app.controller("UserController", ['$scope', '$http', function($scope, $http, httpPostService) {
 var self=this;
 self.userBean={username:''};
$scope.insertData = function()
{
    alert($scope.userBean.username);
     $http({
         method: "POST",
         url: "register",
         data: $scope.userBean.username
        }).then(function(response){
         console.log(response.status);
         console.log("in success");

     }, function(response){
         console.log(response.status);
         console.log("in fail");
     });
};
}]);
</script>


<form method="post" action="register" name="myForm">
      <label for="username" class="control-label">First Name:</label>
      <input type="text" data-ng-model="userBean.username" class="form-control"  placeholder="Enter Firstname"/>
       <button type="submit" data-ng-click="insertData()" class="btn btn-primary">Submit</button>
    </form>


错误来了,但是没有将值从angular js传递给控制器​​类

最佳答案

在我看来,您发送到控制器的数据是String而不是UserBean对象。您的有效载荷为$scope.userBean.username,但您的控制器期望为@RequestBody UserBean userBean

将控制器更改为

    public ModelAndView doRegister(@RequestBody String userName, BindingResult result)


可能会解决问题。

07-26 06:06