2017-07-14 8 views
0

コントローラ使用@RequestParam DTOのフィールドに暗黙的に

@RequestMapping(method = RequestMethod.GET) 
public ResponseEntity<PaginatedResponse<User>> getAllUsers(
     @RequestParam(defaultValue = "") String q, 
     @RequestParam(defaultValue = "") String[] fields, 
     @RequestParam(defaultValue = "") String[] sort, 
     @RequestParam(defaultValue = "50") Integer limit, 
     @RequestParam(defaultValue = "0") Integer offset, 

     @RequestParam(defaultValue = "") String userField1, 
     @RequestParam(defaultValue = "") String userField2, 
     @RequestParam(defaultValue = "") Boolean userField3, 
     @RequestParam(defaultValue = "") ZonedDateTime userField4, 
     @RequestParam(defaultValue = "") String userRoleId5, 
     @RequestParam(defaultValue = "") Long userRoleId6, 
     @RequestParam(defaultValue = "") Long userRoleId7 
) { 
    //call to service 
} 

UserDTO

public class UserDTO { 
    private String userField1; 
    private String userField2; 
    private boolean userField3; 
    ZonedDateTime userField4; 

    @JsonProperty("USERFIELD5") 
    private String userField5; 

    @JsonProperty("USERFIELD6") 
    private Long userField6; 

    @JsonProperty("USERFIELD7") 
    private Long userField7; 

    //getters and setters 
} 

ユーザフィールドは応答して、ユーザのリストをフィルタリングするGET/usersパラメータで使用されています。現在のコードは動作しますが、コントローラーのフィールドのこの手動定義を避けるより良い方法があるのだろうかと思います。

すべてのリクエストパラメータを取得するためにHahsMapを使用すると考えられましたが、渡されたパラメータが有効かどうかを確認する必要があるため、私はオプトアウトします。

答えて

0

使用@ResponseBodyよう

@ResponseBody 
@RequestMapping(value = "your mapping here", method = RequestMethod.GET) 
public List<User> getUsers() { 

}

およびwは、あなたのユーザエンティティはジャクソンやGSONと属性シリアライズ/ Eあなたが

@SerializedName("user_id") 
private Integer id; 
のようなあなたのフィールドをシリアル化することができますgsonで

関連する問題