我是Spring,也是JSP中的新成员。我正在项目中工作,我需要创建一个页面,在特定的例外情况下应用程序将被重定向。 我有服务的方法抛出一个例外。这个方法在我们的一个页面控制器中用@RequestMapping注解来调用。因此,为了重定向到特定的错误页面,我使用@ExceptionHanlder创建了两个方法来处理此控制器中的这些异常。它看起来如何:使用JSP处理由Spring处理的异常显示消息
@ExceptionHandler(IllegalStateException.class)
public ModelAndView handleIllegalStateException (IllegalStateException ex) {
ModelAndView modelAndView = new ModelAndView("redirect:/error");
modelAndView.addObject("exceptionMsg", ex.getMessage());
return modelAndView;
}
但还不够。我还需要创建ErrorPageController:
@Controller
@RequestMapping("/error")
public class ErrorPageController {
@RequestMapping(method = RequestMethod.GET)
public ModelAndView displayErrorPage() {
return new ModelAndView("error");
}
}
现在工程显示错误页面。但我的问题是,我不能在JSP中显示错误信息...... 我:
<h3>Error page: "${exceptionMsg}"</h3>
但我没有看到一个消息; /取而代之的是,我在URL看到消息:
localhost/error?exceptionMsg=Cannot+change+participation+status+if+the+event+is+cancelled+or+it+has+ended.
而且因为在网址我想有只“本地主机/错误”,仅此而已这是错的。这条消息我想在JSP中显示。
因为您使用空模型创建新模型和视图。但为什么你需要一个自定义异常处理程序?默认的策略包括抛出的异常在一个名为'exception'的属性中。这样它应该可用于您的错误页面。这里的主要问题是你正在做一个重定向来触发一个新的请求,因此你需要一个控制器。默认情况下,模型参数被编码为请求参数。在处理错误的控制器中,不要创建新的模型和视图,只需在页面中返回“错误”,或者在配置中声明视图控制器,就可以为您节省一个类。 –
嗯,它的工作原理,但如何在JSP中显示消息?是否有可能打印其他网址?因为现在我有我打开的URL,但我想看到或被重定向到“localhost/error”。我需要这个,因为应用程序以这种方式工作... – Lui
重定向不是问题在于控制器选择视图时,您正在使用该控制器销毁模型(即使其为空)。此外,对于重定向,您希望使用“RedirectAttributes”而不是普通模型。 –