2

我有一个 RESTful Java 后端,我使用 Jersey(一个 JAX-RS 实现)制作。这个后端在 8084 端口的 glassfish 服务器上运行。我还制作了一些 HTML5/JS/AJAX 页面来显示数据,所以我知道我的 REST 实现正在运行。

我正在尝试使用 Angular.js 框架为此应用程序开发 HTML5 / JS 前端,但我遇到了一些麻烦。我已经设法开发了一些小的 webapps,我在 Microsoft 的 IIS 端口 80 上运行它们。

不幸的是,这两个应用程序之间的通信似乎存在问题。由于我是 Angular 新手,我不确定我是否在前端代码中犯了错误,或者我是否遇到了 CORS 问题。我已经尝试使用 CORS 过滤器在 Tomcat 7 上运行后端,但这并没有解决任何问题。

我的角度代码如下所示:

服务.js

var serviceModule = angular.module('ServiceModule', ['ngResource']);
serviceModule.factory('NodeService', function($resource) {
var NodeService = $resource('http://localhost:port/HtmlJerseyJava/service/node/get/3',{},
    {
        'get' : { method: 'GET',params:{port:':8084'}}
    }
)
return NodeService; 

});

控制器.js

function NodeDetailCtrl($scope, NodeService){
    var node3 = NodeService.get();
    $scope.data = JSON.stringify(node3) ;
}

我现在对 ID 3 进行了硬编码,因为我还需要弄清楚如何将输入字段的值从视图传递到控制器,然后再传递给服务。最终,服务 url 中的 3 将被一个变量 :nodeId 替换

任何帮助将不胜感激。

4

2 回答 2

3

试试下面的简化代码:

app.js(出于测试目的,我建议您将函数放在一个 js 文件中)

var serviceModule = angular.module('ServiceModule', ['ngResource']);
serviceModule.factory('Node', function($resource) {
return $resource('http://localhost:port/HtmlJerseyJava/service/node/get/3',{port:':8084'},
    {
        get {method:'GET'}
    });
});

serviceModule.controller('NodeDetailCtrl', function($scope, Node){
    $scope.data = Node.get();
}

现在您的客户端从 REST 调用中获得什么 JSON 数据会很有趣。

问候马克

于 2013-02-18T16:41:02.630 回答
2

我找到了解决方案。有几个步骤可以解决这个问题:

  1. 将 CORS 过滤器添加到 Glassfish 上的 Jersey servlet。
  2. 将 Angular 版本升级到 1.1.x(目前仍不稳定)
  3. 在您的资源中设置自定义标头。
  4. 享受工作应用程序。

非常感谢 Marcbaur 在这里帮助我。

于 2013-02-19T07:48:57.610 回答