У меня есть контроллер пружинного упора, и я хочу правильно получать данные формы из моего пользовательского интерфейса. Знаете ли вы какой-либо другой способ получения данных формы, кроме моего предложения?
Мне удалось получить данные с помощью @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"
Спасибо