将$ resource get方法中的param对象传递给restful服务

时间:2013-07-02 11:45:17

标签: angularjs-resource

我有关于将param对象传递给$ resource get方法的查询。

在后端restful应用程序中我没有通过routeparam值。 这里是我的示例代码

点击html页面中的搜索按钮,它将移动到控制器,如myapp.js中所述

myapp.js var app = angular.module('myApp',['MyServices']);

app.config(['$ routeProvider',function($ routeProvider){

$routeProvider  
.when('/employeesearch/:empID/:deptID', {
    templateUrl : 'partials/result.html',
    controller : SearchController
})
.otherwise({
    redirectTo : '/defaultsearch'
});} ]);

在controller.js文件中执行console.log时,routeparams值正确显示

SearchController.js

function SearchController($ scope,$ routeParams,EmployeeSearch) $ scope.mydata = EmployeeSearch.getSearchResult($ routeParams.empID,$ routeParams.deptID);

}

myservices.js

angular.module('MyServices',['ngResource'])。

factory('EmployeeSearch', function($resource){
return $resource('rest/employees/:eID/:dID', {}, {
query: {method:'GET', params:{}, isArray:false},
getSearchResult:{method:'GET', params:{eID:'empID',dID:'deptID'}}
});
});

backend restful java class

@Path( “/雇员”) 公共类EmployeeSearchService {

@Path( “{的eID} / {DID}”)

@GET

@Produces(MediaType.APPLICATION_JSON)

public Employee searchmethod(@PathParam(“eID”)String empId,@ PathParam(“dID”)String deptId){

     System.out.println("eid:"+empId);
     System.out.println("did:"+deptId);
        return new Employee(); }

点击restful url:http:localhost:9080 / MyProject / rest / employees / e12 / d12
  - eid的值是'e12',并且确实是“d12”

但是在通过anugular击中 它将eid的值显示为“empID”,并将其作为“deptID”,

它显示myservices.js文件中提到的值

你可以帮我解决这个问题吗?我错误地给了什么?

参考网站:https://github.com/teunh/jfall2012/blob/master/demo/web/index.html

1 个答案:

答案 0 :(得分:1)

params用于默认值,因此当您在调用getSearchResultempIDdeptID)时未提供这些内容时,会将其发送到服务器

factory('EmployeeSearch', function($resource){
    return $resource('rest/employees/:eID/:dID', {}, {
        query: {method:'GET', params:{}, isArray:false},
        getSearchResult:{method:'GET', params:{eID:'empID',dID:'deptID'}}
    });
});

要传递您在$routeParams中捕获的值,您可以将控件中对象的值传递给控制器​​中的getSearchResult,如下所示:

function SearchController($scope, $routeParams, EmployeeSearch) {
    $scope.mydata = EmployeeSearch.getSearchResult({
        eID: $routeParams.empID,
        dID: $routeParams.deptID
    });
}

请注意,对象的键必须与资源路径参数的名称相匹配(:eID:dID