2014-10-28 48 views
9

我有我的REST控制器中包含大量參數的方法。例如:春季地圖GET請求參數自動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) { 
    // ...... 
} 

,我想所有的GET請求參數映射到像一個POJO對象:

public class RequestParamsModel { 

    public RequestParamsModel() { 

    } 

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

我需要這樣的東西,我們可以做的REST控制器使用@RequestBody。

在Spring 3.x中可以做到嗎?

謝謝!

+1

http://stackoverflow.com/a/16942352/4074715 – 2014-10-28 15:39:19

回答

13

可能並且容易,請確保您的bean具有正確的字段訪問器。你可以爲每個屬性添加適當的驗證,只要確保你有適當的罐子。在代碼方面,它將會像

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; 
     } 
     ... 
} 

控制器的方法是

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

和要求,像

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

NotNull註釋包是什麼? – 2016-12-09 09:48:56

+1

其'javax.validation.constraints.NotNull' – 2016-12-09 12:41:57

0

你試圖做

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

是的。我有空的requestParamModel。據我所知,ModelAttribute被用於響應模型。 – IgorOK 2014-10-28 16:03:30

+0

它可以與ModelAttribute註解一起使用,但不包含,但RequestParamsModel必須包含setter方法。謝謝! – IgorOK 2014-10-28 16:48:28