Spring не может правильно декодировать значение в кодировке формы - PullRequest
0 голосов
/ 17 апреля 2019

Я прочитал этот ответ , потому что моя проблема была похожа на вопрос, но теперь я застрял.
Через Почтальон отправляю данные так:

enter image description here

и весной я получаю их так:

@PostMapping(path = PathConstants.START_ACTION, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ResponseEntity<BaseResponse<ProcessInstance>> start(@PathVariable String processDefinitionId,
            @RequestParam("username") String params) {

Это работало, и я могу напечатать значение имени пользователя:

System.out.println("Username " + params);

Проблема в том, что мне нужны все параметры, которые я отправляю, но я не могу получить их в виде строки или любого другого объекта, так как я буду делать много разных запросов, и не все из них имеют «имя пользователя» поле, и, кстати, мне нужно собрать их все.
Как мне этого добиться? Я пытался сделать

 @PostMapping(path = PathConstants.START_ACTION, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ResponseEntity<BaseResponse<ProcessInstance>> start(@PathVariable String processDefinitionId,
            @RequestParam String params) {

или

@PostMapping(path = PathConstants.START_ACTION, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ResponseEntity<BaseResponse<ProcessInstance>> start(@PathVariable String processDefinitionId,
             String params) {

, как предлагается в других ответах, но в этих случаях params равен нулю. Как правильно работать?

1 Ответ

1 голос
/ 17 апреля 2019

Вам нужна аннотация @RequestBody в вашем методе, и я бы рекомендовал использовать MultiValueMap:

@PostMapping(path = PathConstants.START_ACTION, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public ResponseEntity<BaseResponse<ProcessInstance>> start(@PathVariable String processDefinitionId, @RequestBody MultiValueMap<String, String> params)
...