2017-08-10 156 views
1

我开发了我的项目与hybris.And我想在500Error.jsp 但我不能处理500错误的一些模板。下一步我无法获得jsp文件。500错误处理在Spring MVC

我得到这个错误:

SEVERE: Servlet.service() for servlet DispatcherServlet threw exception 
java.lang.NullPointerException 

Aug 10, 2017 3:14:07 PM org.apache.catalina.core.StandardHostValve custom 
SEVERE: Exception Processing ErrorPage[exceptionType=java.lang.Throwable, location=/serverError] 
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException 

在web.xml文件

<error-page> 
     <exception-type>java.lang.Throwable</exception-type> 
     <location>/serverError</location> 
</error-page> 
在Controller.java

以下方法

@RequestMapping(value = "serverError", method = RequestMethod.GET) 
    public String renderErrorPage(final Model model, HttpServletRequest httpRequest) throws CMSItemNotFoundException { 
+1

也许你MST开头“SERVERERROR” – Jens

回答

0

尝试添加斜线标志的RequestMapping在您的控制器中的价值:

@RequestMapping(value = "/serverError", method = RequestMethod.GET) 
public String renderErrorPage(final Model model, HttpServletRequest httpRequest) throws CMSItemNotFoundException { 
+0

没有,这并不解决在这里添加shlash。 –

0

@ java.nazif请在web.xml中添加错误代码。

<error-page> 
 
    <error-code>500</error-code> 
 
    <location>/jsps/500Error.jsp</location> 
 
</error-page>

+0

非常感谢@Pravin Abhale.I尝试了这个解决方案,但它不足以解决问题。因为我想要 /jsps/500Error.jsp不能直接进入jsp文件。它必须放在controller中并在requestMapping() –

1

你可以把一个断点在错误的控制器和它停止如预期? 如果没有,您可以尝试创建一个异常处理程序,然后将消息转发给您的控制器。

@ExceptionHandler(Exception.class) 
public String handleException(final Exception e) { 

    return "forward:/serverError"; 
} 
1

您需要使用@ControllerAdvice如下面的例子:

@ControllerAdvice 
public class ControllerExceptionHandler { 

    private static Logger log = LoggerFactory.getLogger(ControllerExceptionHandler.class); 

    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) 
    @ExceptionHandler(Exception.class) 
    public void notFoundHandler() { 
    log.debug("Item not found. HTTP 500 returned."); 
    } 

}