2016-05-04 40 views
0

カスタムHTTPステータスコード(450)を使用しようとしていますが、「org.springframework.http.HttpStatusに '450' 。私は他のスレッドを検索しようとしましたが、自分の状況に適切な回答を見つけることができませんでした。どんな助けでも大歓迎です。ありがとう!登録されたステータスコード以外のカスタムHTTPステータスコード

私のコードの下に見つけてください:

<http:inbound-gateway supported-methods="POST" 
     request-channel="headerEnricher" 
     error-channel="errorHandlerRouterChannel" 
     reply-channel="responseChannel" header-mapper="headerMapper" 
     path="/testApi/1.0" request-payload-type="java.lang.String" /> 

エラーハンドラメソッド:

private Message<String> createErrorResponse() { 
     Map<String, String> respHeader = new HashMap<String, String>(); 
     respHeader.put(HttpHeaders.STATUS_CODE, "450"); 
     return MessageBuilder.withPayload("Validation Error") 
       .copyHeaders(respHeader).build(); 
} 

エラー例外:

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: No matching constant for [450] 
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: No matching constant for [450] 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:595) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
root cause: java.lang.IllegalArgumentException: No matching constant for [450] 
    org.springframework.http.HttpStatus.valueOf(HttpStatus.java:426) 
    org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.resolveHttpStatusFromHeaders(HttpRequestHandlingEndpointSupport.java:549) 
    org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.setupResponseAndConvertReply(HttpRequestHandlingEndpointSupport.java:443) 
    org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway.handleRequest(HttpRequestHandlingMessagingGateway.java:103) 
    org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:595) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
+0

どのような状況ですか?私は考えることができるほとんどの場合、カスタムhttpステータスコードを避ける傾向があります。 – Michael

+1

ここに見て:http://stackoverflow.com/questions/22150176/custom-http-code-with-spring-mvc – aldanux

+0

こんにちはアルダヌー、返信いただきありがとうございます。しかし、私のコードを見てください。この状況をどのように処理するか教えてください。ありがとう! –

答えて

1

A)私はときにだけ春がバグだらけであることを主張するだろうハードワイヤードのステータスコードをサポートしています。これらはHTTPの拡張ポイントであるため、ステータスコードのセットはオープンエンドです(範囲100..599が満杯になるまで)。

b)ユースケースに関しては、代わりにステータスコード422を代わりに使用できます(https://greenbytes.de/tech/webdav/rfc4918.html#STATUS_422)。

関連する問題