2014-10-28 12 views
9

Ho un metodo nel mio controller REST che contiene molti parametri. Per esempio:Spring map Ottieni automaticamente i parametri di richiesta su POJO

@RequestMapping(value = "/getItem", method = RequestMethod.GET) 
public ServiceRequest<List<SomeModel>> getClaimStatuses(
     @RequestParam(value = "param1", required = true) List<String> param1, 
     @RequestParam(value = "param2", required = false) String param2, 
     @RequestParam(value = "param3", required = false) List<String> param3, 
     @RequestParam(value = "param4", required = false) List<String> param4, 
     @RequestParam(value = "param5", required = false) List<String> param5) { 
    // ...... 
} 

e vorrei mappare tutti i parametri di richiesta GET a un oggetto POJO come:

public class RequestParamsModel { 

    public RequestParamsModel() { 

    } 

    public List<String> param1; 
    public String param2; 
    public List<String> param3; 
    public String param4; 
    public String param5; 
} 

ho bisogno di qualcosa come possiamo fare utilizzando @RequestBody in REST Controller.

È possibile fare in primavera 3.x?

Grazie!

+1

http://stackoverflow.com/a/16942352/4074715 –

risposta

13

Possibile e facile, assicurarsi che il proprio bean disponga di accessori adeguati per i campi. È possibile aggiungere la convalida corretta per proprietà, solo assicurarsi di avere i vasi giusti sul posto. In termini di codice sarebbe qualcosa di simile

public class RequestParamsModel { 

     public RequestParamsModel() { 

     } 

     private List<String> param1; 
     private String param2; 
     private List<String> param3; 
     private String param4; 
     private String param5; 

     @NotNull 
     public List<String> getParam1() { 
      return param1; 
     } 
     ... 
} 

Il metodo di controllo sarebbe

@RequestMapping(value = "/getItem", method = RequestMethod.GET) 
public ServiceRequest<List<SomeModel>> getClaimStatuses(@Valid RequestParamsModel someModel) { 

e la richiesta, qualcosa come

/getItem?param1=list1,list2&param2=ok 
+0

Qual è il pacchetto per l'annotazione NotNull? –

+1

suo 'javax.validation.constraints.NotNull' –

0

Stai cercando di fare

@RequestMapping(value = "/getItem", method = RequestMethod.GET) 
public ServiceRequest<List<SomeModel>> getClaimStatuses(@ModelAttribute RequestParamsModel requestParamModel) { 
... 
} 
+0

Sì. Ho richiesto requestParamModel. Come ho capito ModelAttribute è usato per il modello di risposta. – IgorOK

+0

funziona con annotazione ModelAttribute e senza, ma RequestParamsModel deve contenere metodi setter. Grazie! – IgorOK

Problemi correlati