Passing param object from $resource get method to restful services

痴心易碎 提交于 2019-12-10 12:01:04

问题


i have query regarding passing param objects to $resource get method.

in the backend restful application i am not getting the routeparam values passed . here my sample code

on clicking the search button from the html page it is moving to controller as mentioned in 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'
});} ]);

on doing console.log in controller.js file , the routeparams values are displayed correctly

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("/employees") public class 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(); }

on hitting the restful url :http:localhost:9080/MyProject/rest/employees/e12/d12
- the value of eid is 'e12' and did is "d12"

but on hitting via the anugular it is displaying the value of eid as "empID" and did as "deptID",

it is displaying the value as i mentioned in the myservices.js file

Can you please help me out in this? what am i giving wrongly?

Reference site: https://github.com/teunh/jfall2012/blob/master/demo/web/index.html


回答1:


params is for default values thus they are sent to the server when you didn't provide them in your call to getSearchResult (empID and deptID)

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

To pass the values you captured in $routeParams, you can pass the values in an object in the call to getSearchResult in your controller as follow:

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

Note that the key of the object has to match the name of your resource path parameter (:eID and :dID)



来源:https://stackoverflow.com/questions/17424744/passing-param-object-from-resource-get-method-to-restful-services

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!