2017-07-14 1 views
1

J'ai l'intérieur d'un @RepositoryRestControllerPass en lien entité @RequestParam à la méthode @RepositoryRestController

@RequestMapping(value = "/products/salesReport", method = RequestMethod.GET, produces = "application/json") 
    public @ResponseBody 
    ResponseEntity<?> get(
      @RequestParam(value = "customer", required = false) Resource<Organization> customer, 
      @RequestParam(value = "supplier", required = false) Organization supplier, 
      @DateTimeFormat(pattern = "dd-MM-yyyyy") @RequestParam(value = "startDate", required = false) Date startDate, 
      @DateTimeFormat(pattern = "dd-MM-yyyyy") @RequestParam(value = "endDate", required = false) Date endDate, 
      Pageable pageable 
    ) { ... 

La demande de type d'organisation params ici, je voudrais passer comme uri de style DTS. Quand je passe dans les identifiants longs, cela fonctionne bien et est automatiquement converti en objet entité. Mais quand je passe uri, je reçois:

Failed to convert value of type [java.lang.String] to required type [org.springframework.hateoas.Resource]; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.hateoas.Resource]: no matching editors or conversion strategy found" 

Est-ce que quelqu'un sait si le printemps prend en charge la conversion fait automatiquement uri à l'entité des objets dans un @RepositoryRestController et comment?

Répondre

0

Essayez cette approche:

@RepositoryRestController 
@RequestMapping("/products") 
public class ProductsController { 

    @Autoware 
    private ProductService productService; 

    @GetMapping("/{id}/report/{data}") 
    public ResponseEntity<?> getReport(@PathVariable("id") Product product, @PathVariable("date") Date date) { 
     // some checks... 
     return ResponseEntity.ok(productService.makeReport(product, date); 
    } 
} 
+0

Oui, mais je comme 6-7 paramètres et ils sont tous en option (pour le filtrage). Donc, cette approche n'aide pas vraiment. – aycanadal

+0

Aussi, je passe ces params encodés dans l'url pas dans le corps de toute façon. – aycanadal