带有ExceptionHandler和ModelAndView的ControllerAdvice未在屏幕上加载正确的视图

时间:2014-02-20 19:41:29

标签: spring modelandview exceptionhandler

我需要帮助,请查看我的代码:

@ControllerAdvice
@EnableWebMvc
public class GlobalExceptionController {

    @ExceptionHandler(CustomGenericException.class)
    public ModelAndView handleCustomException(CustomGenericException ex) {

        // create the model and view with the tiles View pointing to error jsp page
        ModelAndView model = new ModelAndView("pagina.erro");
        model.addObject("errCode", ex.getErrCode());
        model.addObject("errMsg", ex.getErrMsg());

        return model;

    }
...

瓷砖配置:

<definition name="pagina.erro" extends="baseLayout">
    <put-attribute name="titlepagina" value="Página de Erro" />
    <put-attribute name="body" value="/WEB-INF/jsp/error/erro-generico.jsp" />
</definition>

在我的Spring配置xml中我有:

<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/jsp/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

正在加载页面 erro-generico.jsp ,因为如果我输错了代码,错误将显示在eclipse控制台上。

问题是:页面没有显示,实际页面一直显示在浏览器上,甚至URL都没有显示。

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

问题是正在使用的视图解析器与Tiles不兼容,它只适用于纯JSP。

可以按照以下说明为{Tiles}配置视图解析器 - 14.3.2. How to integrate Tiles

bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
  <property name="definitions">
    <list>
      <value>/WEB-INF/defs/general.xml</value>
      <value>/WEB-INF/defs/widgets.xml</value>
      <value>/WEB-INF/defs/administrator.xml</value>
      <value>/WEB-INF/defs/customer.xml</value>
      <value>/WEB-INF/defs/templates.xml</value>
    </list>
  </property>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>