2016-09-18 24 views
-1

私はSpringブートでHandlerInterceptorを使用して一般的なリクエストを処理しています。 しかし、preHandleを実行しているときに、条件が満たされていないと、エラーステータスコードをユーザーに返したいとします。 preHandleの中に例外をスローすると、応答はすべての例外スタックを持ちます。 preHandleの応答コードでカスタムボディを返信する方法springboot: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

私は、エラーコードとしてステータスを除いて何も返さなかったことを意味します –

関連する問題