Я использую эту проблему, поскольку JSP не принимает запрос PUT. Поэтому мне интересно, как это исправить. Я прочитал этот связанный вопрос в переполнении стека, но он не объясняет, как его исправить.
Статус HTTP 405 - JSP разрешают только GET POST или HEAD
Исходя из фона Rails, я пытаюсь сделать это, поэтому я использую REST-стиль REST, например PUT для обновлений, и DELETE для удаления ресурса пользователя.
Но всякий раз, когда в этом контроллере возникает ошибка, он пытается вернуть запрос исходному JSP, но Tomcat 8.0.9 не принимает запрос и дает эту ошибку: "HTTP Status 405 - JSP разрешают только GET POST или HEAD". Я попытался отключить readonly в Tomcat web.xml - это не имело никакого эффекта, и я все еще получаю ошибку. Я переключил его на метод POST, и поток работает нормально.
Есть ли способ заставить форвард быть методом POST, все еще принимая метод PUT для запроса?
/**
* Edit a user account.
* @return the edit user view
*/
@RequestMapping(value = {"/update/{userId}"}, method = RequestMethod.PUT)
public String updateUser(@Valid @ModelAttribute("user") User user, BindingResult result, final RedirectAttributes redirectAttributes)
{
logger.debug(user);
// we check for duplicate email addresses during the update operation.
List<User> userCheckList = userRepository.findByEmail(user.getEmail());
if (userCheckList.size() > 0)
{
// size of list should only ever be 1
User userCheck = userCheckList.get(0);
if (userCheck.getId() != user.getId())
{
result.rejectValue("email", "error.user", "An account already exists for this user email address.");
}
}
if (result.hasErrors())
{
return "admin.users.edit";
}
// we locate the user and add it to the model
userRepository.save(user);
// the save operation was successful so we show the user message.
redirectAttributes.addFlashAttribute("user", user);
redirectAttributes.addFlashAttribute("message", "Updated successfully");
String viewName = "redirect:/admin/users";
logger.debug(viewName);
return viewName;
}