Сопоставить параметры запроса с моделью с помощью специального конвертера - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующий запрос к моему REST API :

GET {hostname}:{port}/entity?code=123&recordId=422&prop1=123&prop2=213&propN=512

Я хочу преобразовать параметры запроса в модель:

public class EntityFilter { 
  private String code;
  private String recordId;
  private MultiValueMap<String, String> props; //all props goes here eg prop1=123, prop2=213

  //getters and setters are ommited
}

И получить эту модельв качестве входного параметра для контроллера:

@GetMapping(value = "/entities", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity getEntities(EntityFilter filter) {
   //code
}

При использовании подобной установки у меня будут " код " и " recordId ", заполненные правильными значениями, ноКарта " props " будет пустой.

Как я могу сказать Spring, чтобы он заполнял объект модели в соответствии с каким-то пользовательским конвертером или чем-то еще?

Я пытался использовать:

@InitBinder
public void initBinderAll(WebDataBinder binder) {
   binder.registerCustomEditor(EntityFilter.class, new FilterProperyEditor());
}

Но фактические методы FilterPropertyEditor вроде setAsText (String text) не выполняются вообще.

1 Ответ

0 голосов
/ 03 декабря 2018

Возможно, вам нужно изменить запрос на

GET {hostname}:{port}/entity?code=123&recordId=422&props[0]=123&props[1]=213&props[N]=512
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...