2

我是 angularjs 和 jersey 的新手,我需要一些帮助来编写我的 helloworld REST 应用程序......

这是我的球衣

@Path("/helloworld")
public class HelloWorldResource {

   @GET
   @Produces(MediaType.TEXT_PLAIN)
   public String sayHello(){
        return "Hello Jersey World";
   }
}

这是我的带有 angularJS 的控制器客户端

angular.module('myApp', ['serverApp']);

angular.module('serverApp',['ngResource']).factory('servercom', function($resource){
     return $resource('http://192.168.2.60\\:8080/RestExample/helloworld/', {},
          {query: {method:'GET', params:{}, isArray:false}});
});

function MyController($scope, servercom){

   $scope.temp = servercom.get();
   $scope.text = $scope.temp.name;
}

现在的问题是,当我通过浏览器访问我的 REST 服务时,它返回字符串并且一切正常……但是当我尝试通过 AngularJS 访问它时,我在球衣中收到以下消息:

com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes 信息:找不到类 java.lang.String 的 JAX-B 元素

那么我的球衣(或角度)代码有什么问题?

4

1 回答 1

3

AngularJs 期望从您的资源返回 JSON,但它实际上返回一个简单的字符串,这可能是一个问题。

在上面的代码中,尝试从您的资源方法返回一个简单的 JSON,例如

return "{\"name\":\"Hello Jersey World\"}";

并将“application/json”添加到可生产的媒体类型

@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN})

但是,我建议切换到 Jersey 2.0(请参阅用户指南)并查看实际在前端使用 AngularJs的bean 验证示例。

于 2013-07-19T14:11:50.053 回答