Показать страницу ошибок для разных тем против одной ошибки - PullRequest
1 голос
/ 16 ноября 2011

Я работаю над приложением в J2EE, Spring mvc.

Приложение имеет две темы.Если приходит java.lang.Exception, это обрабатывается.Я настраиваю страницу ошибки в web.xml как:

<error-page>
     <exception-type>java.lang.Exception</exception-type>
     <location>/WEB-INF/jsp/uncaughtException.jsp</location>
</error-page>

Каждый раз в любой теме отображается uncaughtException.jsp Я хочу показать разные страницы для разных тем.

1 Ответ

3 голосов
/ 16 ноября 2011

Я проделал следующую работу, чтобы показать разные сообщения для разных исключений. Думаю, этот трюк может вам помочь.

Я просто перенаправляю исключение с разными сообщениями каждый раз и показываю это сообщение на одном и том жеpage.

  @ExceptionHandler(Exception.class)
      public ModelAndView handleMyException(Exception  exception) {
         ModelAndView mv = new ModelAndView("redirect:errorMessage?error="+exception.getMessage());
         return mv;
              } 

  @RequestMapping(value="/errorMessage", method=RequestMethod.GET)
  public ModelAndView handleMyExceptionOnRedirect(@RequestParamter("error") String error) {
      ModelAndView mv = new ModelAndView("uncaughtException");
      mv.addObject("error", error);
      return mv;
       } 

Обновление:

Вы также можете использовать SimpleMappingExceptionResolver, это может быть более полезно в вашем случае: вы можете просто сопоставить каждое исключение с каждой страницейи страница по умолчанию.

<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <prop key="org.springframework.dao.DataAccessException">/general/error/500</prop>
            <prop key="freemarker.core.InvalidReferenceException">/general/error/500</prop>
            <prop key="NumberFormatException">/general/error/500</prop>
        </props>
    </property>
    <property name="defaultErrorView" value="/general/error/500" />
</bean>

Update 2: I think you need to treat 404 separately.

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/pages/404.jsp</location>
  </error-page>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...