2017-06-05 2 views
0

Ich versuche, Parameter aus angular JS $http Service zu Ruhe Service mit ** @queryParam**. Ich muss eine Menge Parameter holen (unten habe ich für 3 als Beispiel gezeigt, aber ich muss ungefähr 12-15 davon verwenden, die ich an die Java-Seite übergeben muss), so dass der Code hübsch aussieht, wenn man alle mit @QueryParam abruft schlecht. Ich benutze GET.Wie eine große Anzahl von Parametern von Angular js zum Rest Service übergeben werden

Wie kann ich das optimieren?

Beispiel, was ich tue -

Angular Js-Code -

$http({ 
    url: someUrl, 
    method: "GET", 
    params: {filter1: $scope.filter1, 
filter2:$scope.filter2, 
filter3:$scope.filter3 
}); 

Java-Seite -

@path("/getAllData") 
@GET 
@Produces({..} 
public response getAllData(@QueryParam("filter1") final String filter1, 
          @QueryParam("filter2") final String filter2, 
          @QueryParam("filter3") final String filter3){ 
} 

Auch wollte die Optimierung im Fall wissen, wann ich URL bin Gebäude statt von params Objekt, und die selbe mit @PathParam

$http.get('rest/test/getAllData/?filter1='$scope.filter1 + 
      '&filter2='$scope.filter2 + '&filter3='$scope.filter3 + 
      '&filter4='$scope.filter4) 

Ich kann es tun, indem Sie einzeln in @QueryParam übergeben. Ich suche nach optimiertem Code, wenn wir eine große Anzahl von Parametern haben.

+0

Mögliche Duplikate [wie Java-Objekt als Parameter in ruhiger webservice passieren] (https://stackoverflow.com/questions/17038000/how-to-pass-java-objekt-als-ein-parameter-in-restful-webservice) –

Antwort

0

Erstellen Sie ein POJO mit allen erforderlichen Parametern.

In eckig, tun dies

var obj = {}; 
obj.filter1 = $scope.filter1; 
obj.filter2 = $scope.filter2; 
obj.filter3 = $scope.filter3; 


$http({ 
    url: someUrl, 
    method: "GET", 
    params: obj 
}); 

Sie alle Parameter akzeptieren können Sie so Ruhe -

@path("/getAllData") 
@GET 
@Produces({..} 
public response getAllData(MyPojo obj){ 
    //String filter1 = obj.filter1; 
} 
0

Sie es in zwei Arten tun:

1) org.json.simple.JSONObject .

2) Bean oder POJO-Klasse.

AngularJS Controller:

var URL = appURL+'/adm/addCollProcess.do'; 
var json = {"col_pro_id":$scope.col_pro_id, "col_code": $scope.col_code, "exam_type_ids": $scope.exam_types.toString().replace("[","").replace("]",""), 
    "created_by" : "admin", "file_path" : $scope.file_path, "website" : $scope.website, "facebook" : $scope.facebook}; 

// using JSONObject 
$http.post(URL, json).then(function(response){ 
    if(response.data){ 
     // Code 
    } 
}); 

// using Bean Class 
$http.post(URL, JSON.stringify(json)).then(function(response){ 
    if(response.data){ 
     // Code 
    } 
}); 

Java Controller:

// using JSONObject 
@RequestMapping(value="/addCollProcess.do", method=RequestMethod.POST) 
public boolean addCollProcess(@RequestBody JSONObject json){ 
    // Code 
} 

// using Bean Class: 
@RequestMapping(value="/addCollProcess.do", method=RequestMethod.POST) 
public @ResponseBody boolean addCollProcess(@RequestBody AdmissionProcessBean processBean) { 
    // Code 
} 
Verwandte Themen