簡體   English   中英

如何在 Spring MVC 錯誤處理程序中打印堆棧跟蹤

[英]How to print stack trace in Spring MVC Error handler

我在我的應用程序中使用 Spring SimpleMappingExceptionResolver

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
   <property name="exceptionMappings">
      <map>
         <entry key="Exception" value="error.htm"/>
      </map>
    </property>
    <property name="defaultErrorView" value="error.htm" />
</bean>

我的錯誤處理程序也很簡單

@Controller
@RequestMapping("error.htm")
public class ErrorController {


    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView getErrorReport(HttpServletRequest request) {

        return new ModelAndView("/WEB-INF/jsp/error.jsp"); 
        }
    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView getErrorPostReport(HttpServletRequest request,HttpServletResponse response) {
        TreeMap<String,Object> map=new TreeMap<String,Object>();
        map.put("isDataChange", true);
        map.put("isBigError", true);
        return new ModelAndView(JSONView.RenderObject(map, response));
        }

}

如何在我的錯誤 Controller 中打印異常消息和異常堆棧跟蹤(或 email)?

提前致謝

更新

謝謝回復。 我想在 jsp 以及控制台中打印堆棧跟蹤。 我還想在 ErrorController 本身中訪問 object,以便我可以將該信息用於 email 日志(因為一些調用基於 ajax,(他們使用 POST),error.jsp 在那里沒有用,所以我需要一些方法來訪問該信息在 controller 本身)。

由於您的getErrorReport方法除了返回 jsp 頁面外什么都不做,您可以在 bean 聲明中返回它:

<property name="defaultErrorView" value="/WEB-INF/jsp/error.jsp" />

在頁面中您可以訪問exception model object:

<c:forEach items="${exception.stackTrace}" var="element">
    <c:out value="${element}">
</c:forEach>

如評論中所述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM