2017-04-23 6 views
0

Hier ist der Code für den ControllerAngularJS-Spring: Werden Parameter als Null in Controller

@RequestMapping(value = "/fetchRecord/", method = RequestMethod.POST) 
    @ResponseBody 
    public String fetchRecord(Integer primaryKey) 
    { 
     return this.serviceClass.fetchRecord(primaryKey); 
    } 

Hier mein Winkel Code ist

var dataObj = { 
      primaryKey : $scope.primaryKey 
     }; 
     var res = $http.post('/Practice/learn/fetchRecord/', dataObj); 
     res.success(function(data, status, headers, config) { 

      $scope.firstname = data; 
     }); 
     res.error(function(data, status, headers, config) { 

      alert("failure message: " + JSON.stringify({ 
       data : data 
      })); 
     }); 

ich bin in der Lage meinen Code zu debuggen. Obwohl ich es in Browser überprüfen kann, dass Wert für primaryKey übergeben wird. Aber es ist immer noch Null im Controller.

ein möglicher Grund dafür?

+0

Sie können versuchen, fetchrecord (@Requestbody Ganzzahl primkey) –

+0

facing error: Die Anfrage vom Client gesendet wurde syntaktisch falsch. – sparsh610

+0

Und $ http.put statt post –

Antwort

0

Sie sollten ein JSON-Objekt senden,

dies versuchen,

var dataObj = { 
      primaryKey : $scope.primaryKey 
}; 
var res = $http.post('/Practice/learn/fetchRecord/', angular.toJson(dataObj)); 
+0

noch ist es NULL :( – sparsh610

0

Sie den Wert in der Controller von zwei Wegen:

Erste Option:

Weisen Sie ein Objekt mit dem Attribut zu, das Sie übergeben möchten. Angenommen, Sie haben RecordEntity Objekt, es hat einige Attribute, einer von ihnen ist der Integer primaryKey. Die Anmerkung @RequestBody den Wert erhalten, so wird der Regler sein:

Backend

@RequestMapping(value = "/fetchRecord/", method = RequestMethod.POST) 
@ResponseBody 
public String fetchRecord(@RequestBody RecordEntity recordEntity) { 
    return "primaryKey from requestBody: " + recordEntity.getPrimaryKey(); 
} 

Frontend

Im Frontend sollten Sie eine json senden, die die primaryKey Attribut in der hat Körper zum Beispiel:

http://localhost:8080/Practice/learn/fetchRecord/ 

Beitrag Körper:

{ 
    "primaryKey": 123 
} 

Sie Controller den Wert im RecordEntity Objekt erhalten.


Zweite Option:

Geben Sie den Wert von URL, die Anmerkung @RequestParam den Wert erhalten, so wird der Controller sein:

Backend

@RequestMapping(value = "/fetchRecord", method = RequestMethod.POST) 
@ResponseBody 
public String fetchRecord(@RequestParam Integer primaryKey) { 
    return "primaryKey from RequestParam: " + primaryKey; 
} 

Frontend

in der URL sollten Sie den Wert mit ?primaryKey, zum Beispiel Controller

http://localhost:8080/Practice/learn/fetchRecord?primaryKey=123 

Sie senden den Wert in den Integer primaryKey erhalten.

Verwandte Themen