Как разместить данные модели и файлы? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть такой контроллер:

@RequestMapping(value = "/user/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody 
public UserLesserDTO createUser(@RequestParam("profileImageFile") MultipartFile file, @RequestBody UserDTO user, @PathVariable("method") String method) {
    // Save profileImage as a profile image and store the image file name in user's profileImage attribute.
    // save user.
}

, и у меня есть HTML-форма со всеми атрибутами пользователя как <input type="text" name="user attribute name"> плюс один <input type="file" name="profileImageFile">

Я получил ошибку415 вроде: The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.

, но когда я удаляю @RequestBody UserDTO user из подписи моего createUser() метода, часть файла загрузки начинает работать, и я могу получить файл.

Уже прочитано this и this для установки связывателя данных.

@InitBinder
public void initBinder(WebDataBinder binder, WebRequest request) {
    binder.setDisallowedFields("user.profileImage");
    binder.setAllowedFields("profileImageFile");
}

Но это ничего не меняет.

1 Ответ

0 голосов
/ 12 июня 2018

Мне нужно извиниться.

Сначала я не показываю свою HTML-форму.Во-вторых, потому что я не говорю, что это действительно страница JSP.И поскольку мне нужно сделать домашнее задание.

Я должен создать свою форму, используя form:form (Spring form) с modelAttribute="<THE_MODEL>" и использовать path="<ATTRIBUTE>" для сопоставления полей формы HTML с моей моделью на уровне контроллера.

<form:form enctype="multipart/form-data" modelAttribute="userToEdit" />
    <form:input name="username" path="username" /> 
</form:form>

Контроллер:

@RequestMapping(value = "/user/{method}", method = RequestMethod.POST)
    public String home(@RequestParam("profileImageFile") MultipartFile file, @PathVariable("method") String method, @ModelAttribute("userEdt") User user) {
    // Save image file
    // Save user ...
}

Я не уверен насчет части modelAttribute.Я думаю, что это только для отображения модели, поступающей с контроллера на страницу, и не связано с отправкой формы на контроллер получателя.Во всяком случае ... это работает сейчас.Я могу взять файл И модель (сущность) всего за одно действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...