0

アイテムが見つからない場合に404​​エラーに応答するRestfulAPIがありますが、アイテムが見つからない理由(不明、利用不可など)に応じてメッセージが異なり、SpringMVCを使用して次のように実行されます。

response.sendError(HttpServletResponse.SC_NOT_FOUND, "NOT_AVAILABLE");

(これはどのブラウザでも正常に機能し、メッセージとして「NOT_AVAILABLE」を含む404エラーを表示します)

ここで、それらを管理するために、SpringRestTemplateを使用してそのメッセージをJavaコードに戻したいと思います。私はこれを試しました:

try {
    rest.put(apiRootUrl + "/item/{itemId}", null, itemId);
} catch (HttpClientErrorException e) {
    if (NOT_FOUND == e.getStatusCode()) {
        switch (MyErrorCode.valueOf(e.getStatusText())) {
            case NOT_AVAILABLE:
                return displayNotAvailableError();
            case UNKNOWN:
                return displayUnknownError();
            default:
                // ...
        }
    }
}

しかし、ではgetStatusText()、カスタム値ではなく、常にNOT FOUNDラベル(404から)を取得しました。

誰かが404エラーからカスタムメッセージを取得することが可能かどうか知っていますか?したがって、どのように?

どうもありがとう!

編集: Tomcatサーバー(404 HTMLページを送信する)で実行していますが、これはWeblogicサーバーに追加されません

4

1 に答える 1

0

OK、もう少し掘り下げた後、解決策は実際には非常に簡単です!

Tomcatはデフォルトの404ページを返送していたので、自分で使用するように指示する必要がありました。

これを行う方法:

  • 次のような404.jspページを作成します。

    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <c:out value="${requestScope['javax.servlet.error.message']}"/>
    
  • web.xmlで参照してください

    <error-page>
        <error-code>404</error-code>
        <location>/error/404.jsp</location>
    </error-page>
    

そして今、あなたはあなたのクライアントでメッセージを得ることができますe.getStatusText()

于 2012-08-08T13:09:25.997 に答える