2016-09-18 829 views
-1

我在Spring Boot中使用HandlerInterceptor來處理常見類型的請求。 但是,在執行preHandle時,如果條件不滿足,我想要將錯誤狀態碼返回給用戶。 如果我在preHandle內部拋出異常,則響應將具有所有異常堆棧。 如何從preHandlespringboot:如何在HandlerInterceptor的預處理中返回錯誤狀態碼

發送定製的身體爲響應響應代碼
+0

通過調用'response'參數對象的適當方法。哪一部分不會從['preHandle()']的定義中清楚(http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor .html#preHandle-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-java.lang.Object-)方法? – Andreas

回答

6

如果條件不具備,你可以使用response.setStatus(someErrorCode)設置響應狀態代碼,返回false停止執行。要發送自定義正文,您可以使用以下方法:response.getWriter().write("something");

以下是完整示例。

@Override 
public boolean preHandle(HttpServletRequest request, 
    HttpServletResponse response, Object handler) throws Exception { 

    if (conditionsNotMet) { 
     response.getWriter().write("something"); 
     response.setStatus(someErrorCode); 

     return false; 
    } 

    return true; 
} 

希望這會有所幫助。

+0

仍然是身體不可見,我只看到狀態碼。 我做錯了什麼 –

+0

你是什麼意思身體不可見? –

+0

我的意思是我沒有得到任何迴應,除了狀態作爲發送錯誤代碼 –