4

我是 Spring MVC 的新手。我有一个捕捉异常的控制器,在捕捉到异常后我想重定向到error.jsp页面并显示异常消息(ex.getMessage())。我不想使用 Spring 的异常处理程序,而是必须以编程方式重定向到 error.jsp。

@RequestMapping(value = "http/exception", method = RequestMethod.GET)
public String exception2()
{
    try{
        generateException();
    }catch(IndexOutOfBoundsException e){
        handleException();
    }
    return "";
}

private void generateException(){
    throw new IndexOutOfBoundsException();      
}

private void handleException(){

    // what should go here to redirect the page to error.jsp
}
4

1 回答 1

4

我不确定你为什么String要从你的方法中返回;Spring MVC 中的标准是使用注释的方法@RequestMapping返回 a ModelAndView,即使您没有使用 Spring 的异常处理程序。据我所知,您不能在不返回ModelAndView某个地方的情况下将您的客户端发送到 error.jsp。如果您需要帮助理解 Spring 控制器的基本概念,我发现本教程展示了如何在 Spring MVC 中创建一个简单的“Hello World”应用程序,并且它有一个简单的 Spring 控制器的很好的示例。

如果您希望您的方法在遇到异常时返回错误页面,否则返回正常页面,我会这样做:

@RequestMapping(value = "http/exception", method = RequestMethod.GET)
public ModelAndView exception2()
{
    ModelAndView modelAndview;
    try {
        generateException();
        modelAndView = new ModelAndView("success.jsp");
    } catch(IndexOutOfBoundsException e) {
        modelAndView = handleException();
    }
    return modelAndView;
}

private void generateException(){
    throw new IndexOutOfBoundsException();      
}

private ModelAndView handleException(){
     return new ModelAndView("error.jsp");
}
于 2012-07-05T23:15:43.420 回答