раньше я отправлял поле списка в качестве JSON, поэтому пользовательского преобразователя было достаточно, чтобы выполнить задачу. Но это не будет работать для файлов. Поэтому я нашел этот ответ о том, как справиться с постом массивов/списков объектов (они использовали NextJS в качестве бэкэнда), и я хотел бы сделать что -то подобное для весны, а также не могу найти никаких ответов. Вот что -то, как должен выглядеть запрос:
< /p>
или, если вам нужен пример JS: < /p>
Код: Выделить всё
function createFormData() {
const formDate = new FormData()
formDate.append('name', 'test')
formDate.append('logo', new File([''], 'test.png'))
formDate.append('link', 'test')
formDate.append('contacts[0][name]', 'test')
formDate.append('contacts[0][email]', 'test')
formDate.append('contacts[0][icon]', new File([''], 'test.png'))
formDate.append('contacts[1][name]', 'test')
formDate.append('contacts[1][email]', 'test')
formDate.append('contacts[1][icon]', new File([''], 'test.png'))
return formDate
}
< /code>
При получении такого запроса, пружина возвращает:
Invalid property 'contacts[0][email]' of bean class [com.example.trilha.dto.PartnerRequest]: Illegal attempt to get property 'contacts' threw exceptionКак это реализовать?
Код: Выделить всё
@PostMapping(value = "createPartner", consumes = "multipart/form-data")
public ResponseEntity createPartner(
@ModelAttribute PartnerRequest partnerRequest
)
< /code>
DTOS для запроса следующим: < /p>
record Contacts(
String name,
String email,
MultipartFile icon
) {}
public record PartnerRequest(
String name,
MultipartFile logo,
String link,
List contacts
){}
< /code>
Редактировать:
У меня сейчас нет фронтальной p> Изменение моделиаттрибу Подробнее здесь: https://stackoverflow.com/questions/791 ... pring-boot