在ajax失败时在tile中加载整个Tiles布局

时间:2014-08-12 08:06:09

标签: java ajax spring exception tiles

我不确定我是否已经确定了一个合适的标题,不过这是我的问题:

我有一个带有页眉,正文和页脚的图块布局。我使用ajax请求从服务器获取任何数据,并使用jquery在jsp上填充。

在服务器端(Spring 3.1.2),我使用了Spring提供的 @ExceptionHandler ,如下所示:

@ExceptionHandler(Exception.class)
    public ModelAndView handleAllException(Exception ex) {
        ModelAndView model = new ModelAndView("error");
        model.addObject("errMsg", ex.getMessage());
        return model;
    }

错误的tile定义如下:

<definition name="error"  template="/WEB-INF/jsp/layout.jsp">
        <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
        <put-attribute name="body" value="/WEB-INF/jsp/error.jsp" />
        <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>

所以,这很好用,因为当应用程序中抛出任何异常时,用户将被重定向到error.jsp,在那里他将显示错误详细信息。

现在,出现了实际问题。在正文中(在其中一个jsp中),我有几个搜索字段,在输入哪个用户可以点击“搜索”以获得结果并且此事务作为ajax请求发生。

当在此ajax事务期间引发任何服务异常时,异常仍由ExceptionHandler处理,并且响应将路由到错误视图。但是在用户界面上,在正文部分中,整个模板都会被加载,以便有一个“标题”,“页脚”和错误页面在正文部分。如果你可以想象,它就像整个身体内的整个屏幕。

为了避免这种情况,我在异常处理程序内部(也在catch {}块内部)尝试了response.redirect()以使用错误jsp再次呈现整个页面。但没有成功...... !!!

就此问题寻求帮助。

TIA, 王子

1 个答案:

答案 0 :(得分:0)

您可能在Controller部件的ajax调用期间将整个ModelAndView作为ResponseBody返回。对不起,我是新来的,我不能对你的问题发表评论,所以我把它作为答案发布了