在Spring MVC中从控制器调用Jsp页面
问题内容:
我是Spring
MVC的新手。我有contoller捕获异常,捕获异常后,我想重定向到error.jsp页面并显示异常消息(ex.getMessage())。我不想使用Spring的Exception
Handler,而是必须以编程方式重定向到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
}
问题答案:
我不确定为什么String
要从方法中返回。Spring MVC中的标准是为带有注解的方法@RequestMapping
返回a
ModelAndView
,即使您没有使用Spring的Exception
Handler。据我所知,如果不返回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");
}