Class HttpResponseUtil

java.lang.Object
nablarch.fw.web.handler.HttpResponseUtil

public final class HttpResponseUtil extends Object
HTTP の応答時に使用するユーティリティ。
Author:
Koichi Asano
  • Method Details

    • chooseResponseStatusCode

      public static int chooseResponseStatusCode(HttpResponse res, ServletExecutionContext ctx)
      Nablarchのステータスコードから、 クライアントに返すレスポンスに使用するHTTPステータスコードを選択する。 ステータスコードの値は以下のルールに従って決定される。

      1. 通常の画面遷移の場合

      HTTPレスポンスコードの変換モード(通常はHttpResponseHandler経由で設定する)が、CONVERT_ONLY_400_TO_200の場合、 以下のようにステータスコードのマッピングを行う。
      このマッピングは、1.5.x以降のデフォルトのマッピングである。
      バリデーションエラー等を表すNablarchのステータスコード400番のみ、HTTPレスポンスコード200にマッピングされる。

       ========================= =======================
       Nablarchのステータスコード    HTTPレスポンスコード
       ========================= =======================
       2xx                       (そのまま)
       3xx                       (そのまま)
       400                       200
       4xx(400以外)              (そのまま)
       5xx                       (そのまま)
       ========================= =======================
       
      HTTPレスポンスコードの変換モードが、CONVERT_ALL_TO_200の場合、 以下のようにステータスコードのマッピングを行う。
      このマッピングは、1.4.x以前と同一のマッピングである。
       ========================= =======================
       Nablarchのステータスコード    HTTPレスポンスコード
       ========================= =======================
       2xx                       200
       3xx                       (そのまま)
       4xx                       200
       5xx                       200
       ========================= =======================
       
       
      2. Ajaxクライアントからのリクエストの場合

      HTTPリクエストに ヘッダ X-Requested-With が設定されており、 かつその値が、"XMLHttpRequest" に一致する場合はHTTPレスポンスオブジェクトの ステータスコードをそのまま設定する。

      X-Requested-Withヘッダとは、javascriptフレームワークが XMLHttpRequestオブジェクトを 使用してリクエストを送信する際に付与するカスタムHTTPヘッダであり、 主要なJavascriptフレームワークのほとんどでこれをサポートしている。 (prototype.js, jQuery, dojo, MooTools など)

      また、XMLHttpRequestを直接使用している場合でも、以下のサンプルの様なコードを 追加することで、簡単に対応させることができる。

       var xhr = getXmlHttpRequest(); // XMLHttpRequestオブジェクトを生成
       xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); // ヘッダ追加
       
      Parameters:
      res - HttpResponse
      ctx - ServletExecutionContext
      Returns:
      クライアントに返すレスポンスに使用するHTTPステータスコード
    • isAjaxRequest

      public static boolean isAjaxRequest(ServletExecutionContext ctx)
      このリクエストがXMLHttpRequestオブジェクト(いわゆるAjaxリクエスト)によるものか どうかを判定する。 このメソッドでは、HTTPリクエスト中に含まれる X-Requested-With ヘッダを用いて Ajaxリクエストの判定を行う。
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      Ajaxリクエストであれば true を返す。
    • setStatusConvertMode

      public static void setStatusConvertMode(ServletExecutionContext ctx, HttpResponseUtil.StatusConvertMode mode)
      NablarchのステータスコードをHTTPレスポンスコードに変換する際のモードを設定する。
      Parameters:
      ctx - 実行コンテキスト
      mode - 変換のモード