#java #spring #jsp #spring-mvc #error-handling
#java #spring #jsp #spring-mvc #обработка ошибок
Вопрос:
Во время тестирования моего приложения Spring я загрузил файл, размер которого превысил максимально допустимый размер, настроенный в приложении.
Следовательно, в JSP появилось следующее сообщение, видимое пользователю:
Error
Exception: org.springframework.web.multipart.MultipartException:
something went wrong here; nested exception is
org.apache.commons.fileupload.FileUploadBase$FileUploadIOException
Что мне нужно изменить, чтобы представить пользователю более удобное сообщение в JSP?
Например:
Uploaded file exceeds maximum allowed size of 25MB.
Ответ №1:
Я раньше не делал Spring MVC, но я думаю, что Spring может это сделать.
Используйте ресурсы сообщений (ResourceBundle). Вам нужно будет перехватить исключение и создать страницу ошибки, на которой может отображаться сообщение об ошибке.
Spring использует ResourceBundleMessageSource для ресурсов сообщений. В этом примере (однако слишком простом) показано, как настроить его и использовать.
Ответ №2:
Используйте HandlerExceptionResolver.
public class MyExceptionResolver implements HandlerExceptionResolver{
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){
return new ModelAndView("jsp_to_show_error_message.jsp").
addObject("message", ex.getMessage());
}
}
Создайте новый jsp jsp_to_show_error_message.jsp
и поместите ${message}
куда-нибудь в него. Настройте MyExceptionResolver
в своем xml. Если вы используете контроллер на основе аннотаций, прочитайте здесь.
Ответ №3:
Оставляя Spring за рамками рассмотрения, Servlet API предлагает возможность прикреплять пользовательские страницы ошибок к определенным исключениям. В этом конкретном примере речь идет о добавлении следующей записи в web.xml
.
<error-page>
<exception-type>org.springframework.web.multipart.MultipartException</exception-type>
<location>errors/upload.jsp</location>
</error-page>
Таким образом, вы можете предоставить полностью настраиваемую страницу с ошибкой в макете веб-страницы по умолчанию в виде errors/upload.jsp
.