У меня есть это в контроллере:
@RequestMapping(
value = "/update",
params = {"new_profile_image"},
method = RequestMethod.POST)
public ModelAndView updateUserProfileImage(
@RequestParam(value = "new_profile_image") CommonsMultipartFile newProfileImage,
ModelMap model) {
System.out.println("controller executed!");
if(newProfileImage != null && !newProfileImage.isEmpty()) {
updateService.updateUserProfileImage(newProfileImage.getBytes());
}
return new ModelAndView("redirect:/users/my_profile");
}
И в файле jsp:
<form action="<c:url value='/users/update?${_csrf.parameterName}=${_csrf.token}' />" method="post" enctype="multipart/form-data">
<input name="new_profile_image" type="file" id="new_profile_image">
<button type="submit" class="btn btn-primary">Update</button>
</form>
при отправке изображения я получаю
Страница ошибки Whitelabel Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант.
Сб 08 фев. 19:08:10 CST 2020 Произошла непредвиденная ошибка (type = Bad Request , статус = 400). Не удалось преобразовать значение типа 'java .lang.String' в требуемый тип 'java .lang.Long'; вложенное исключение: java .lang.NumberFormatException: для входной строки: "update"
Строка "controller executed!"
никогда не отображается в консоли. Я изменил value = "/update"
на value = "/updateImage"
в аннотации RequestMapping и action="<c:url value='/users/update?${_csrf.parameterName}=${_csrf.token}' />"
на action="<c:url value='/users/updateImage?${_csrf.parameterName}=${_csrf.token}' />"
, а сообщение об ошибке изменилось на nested exception is java.lang.NumberFormatException: For input string: "updateImage"
Я понятия не имею, что не так, и в консоли затмения нет исключений
Отредактировано: я забыл сказать, что контроллер имеет RequestMapping("/users")
на уровне класса.
Теперь я изменил в контроллере value = "/update"
на value = "/updateImage"
, но я ушел action="<c:url value='/users/update?${_csrf.parameterName}=${_csrf.token}' />"
на странице jsp, и ошибка по-прежнему:
Страница ошибки Whitelabel Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант.
Sat Feb 08 19:08:10 CST 2020 Произошла непредвиденная ошибка (тип = неверный запрос, статус = 400). Не удалось преобразовать значение типа 'java .lang.String' в требуемый тип 'java .lang.Long'; вложенное исключение: java .lang.NumberFormatException: для входной строки: "update"
Я полагаю, что запрос даже не достигает контроллера.