Получение данных формы в контроллере Spring REST - альтернативы - PullRequest
0 голосов
/ 19 июня 2019

У меня есть контроллер пружинного упора, и я хочу правильно получать данные формы из моего пользовательского интерфейса. Знаете ли вы какой-либо другой способ получения данных формы, кроме моего предложения?

Мне удалось получить данные с помощью @RequestPart (" fields-name "), но это неоптимально, так как мне нужно получить данные формы и отправить их в том виде, в каком они есть, на другой контроллер остальных.

MyResponse addAttachment(@RequestParam("file") MultipartFile file, @RequestParam("note") String note);

В конце я хочу, чтобы поток выглядел так:

| UI | - (form-data) ---> | Java-Spring A | --- (данные формы) ----> | Java-Spring B | - (файл из формы) -> | DB |

В настоящее время это выглядит так:

весной A: myResponse addAttachment(@ModelAttribute AttachmentForm form)

Весной B: myResponse addAttachment(@ModelAttribute MultiValueMap<String, Object> form)

Из A-> B я делаю следующее:

MultiValueMap<String, Object> valueMap = new LinkedMultiValueMap<>();
valueMap.add("note", form.getNote());
valueMap.add("file_name", file.getOriginalFilename()); //Send the file as bytes array
valueMap.add("files", new ByteArrayResource(file.getBytes())); 
resttemplate.sendhttpcall(valueMap);// helper function to send between A->B

После отправки данных формы (как объект модели AttachmentForm) я анализирую их перед отправкой из A в B. Через один шаг после restTemplate.exchange он попадает в Spring B, и я получаю следующее исключение (в моем классе контроллера Expception) : "java.lang.IllegalStateException: не найден основной или конструктор по умолчанию для интерфейса org.springframework.util.MultiValueMap"

Спасибо

1 Ответ

0 голосов
/ 19 июня 2019

Как вы отправляете данные на другой контроллер остальных?На мой взгляд, вы должны использовать @RequestParam только для получения данных.

...