将Json对象从AngularJs发布到java JAX-RS服务

将Json对象从AngularJs发布到java JAX-RS服务,java,angularjs,jersey,Java,Angularjs,Jersey,我在谷歌上搜索了几个小时,但还是找不到解决办法 这是我的java代码 @POST public String doLogin(User user) { System.out.println(" = " + user.getUsername()); return ""; } 及 这是我的AngularJs代码 angular.module('notesApp', []).controller('MainCtrl', ['$http', function($http)

我在谷歌上搜索了几个小时,但还是找不到解决办法

这是我的java代码

  @POST
  public String doLogin(User user) {
    System.out.println(" = " + user.getUsername());
    return "";
  }

这是我的AngularJs代码

 angular.module('notesApp', []).controller('MainCtrl', ['$http', function($http) {
      var self = this;
      self.submit = function() {
        $http({
            method: 'POST',
            url: 'http://127.0.0.1:8080/Test/app/login',
            headers : {'Content-Type': 'application/json'},
            data: self.user //forms user object
          })
          .then(function(response) {
            console.log(response.data);
            return response.data;
          }, function(response) {

          });
      }
  }]);
我的错误消息是: 严重:用于Java类实体.User和Java类型类实体.User以及MIME媒体类型application/json的消息体读取器;未找到charset=UTF-8,因为我无法访问java代码中的“user”对象


你能找出我做错了哪一部分吗?非常感谢。

删除查询参数您将得到一个序列化字符串。将其反序列化到用户

@POST
public String doLogin(User user) {
    System.out.println(" = " + user.getUsername());
    return "";
}
您正在设置帖子上的数据字段。这将设置HTTP正文,而不是HTTP查询参数。

您需要从POST正文而不是查询参数中读取

您可以使用以下选项:

  @POST
  public String doLogin( User user) {
    System.out.println(" = " + user.getUsername());
    return "";
  }

@QueryParam用于将作为?用户传递的QueryParam=xyz@gmail.com

检查浏览器调试器网络面板,确保您正在向服务器发送期望的内容。将打开它,然后“发送”您的用户并查看发送的内容。此对象是否与java用户期望的完全相同?

首先非常感谢您的帮助。我之前试过了,我收到了这个错误信息。严重:用于Java类实体.User和Java类型类实体.User以及MIME媒体类型application/json的消息体读取器;未找到字符集=UTF-8。
  @POST
  public String doLogin( User user) {
    System.out.println(" = " + user.getUsername());
    return "";
  }