2017-04-14 2 views
-1

Voulez-vous un simple retour Integer dans ResponseEntity:ResponseEntity ne retrive pas Integer

@PreAuthorize("hasAnyAuthority('WORKER')") 
    @RequestMapping(value = "/countFiles", method = RequestMethod.GET) 
    @ResponseBody 
    public ResponseEntity<Integer> countFiles(HttpServletRequest request){ 
     Integer count = fileService.countFiles(request); 
     if(count == null){ 
      return new ResponseEntity<Integer>(HttpStatus.BAD_REQUEST); 
     } 
     return new ResponseEntity<Integer>(count, HttpStatus.OK); 
    } 

Quand je le fais, sur le site final avant je suis arrivé sans dépôt nommé 'count': enter image description here

Avant vous répondez:

  1. A tout site frontal fonctionne très bien
  2. Le bug est sur le site de back-end
+0

Pouvez-vous s'il vous plaît clarifier votre question? Le code ci-dessus fait exactement ce qu'il dit. Il renvoie une valeur entière. Si vous voulez un champ nommé 'count', le champ doit faire partie des données renvoyées. –

+0

Oui, il "renvoie" Entier. Mais quand j'appelle cette API sur le site d'accueil, elle retourne: http://imgur.com/MNGHIBA. Mais quand je crée un objet simple avec une propriété ('Integer') et lui assigne ma variable de compte, alors au site de frontend je vois correctement la variable de compte. Je remarque que si je veux retourner simple 'Integer' je dois créer' ResponseEntity 'qui est dans le second' ResponseEntity' ... mais ce n'est pas ce que je veux et je pense que ce n'est pas très correct .. – bielas

Répondre

0

Si vous voulez un champ nommé « compte », vous devez inclure le nom du champ dans un résultat d'objet ou d'une carte.

@PreAuthorize("hasAnyAuthority('WORKER')") 
@RequestMapping(value = "/countFiles", method = RequestMethod.GET) 
public ResponseEntity<Integer> countFiles(HttpServletRequest request) 
{ 
    Integer count = fileService.countFiles(request); 
    if (count == null) { 
     return ResponseEntity.badRequest().build(); 
    } 
    return ResponseEntity.ok(Collections.singletonMap("count", count)); 
} 

Pour votre information, il peut être plus facile à utiliser les méthodes statiques ResponseEntity.* pour créer de nouvelles instances ResponseEntity. En outre, vous n'avez pas besoin de @ResponseBody si la valeur de retour est ResponseEntity.