6.2.15. ノーマライズハンドラ

クライアントから送信されるリクエストパラメータをノーマライズするハンドラ。

本ハンドラでは、以下の処理を行う。

  • リクエストパラメータのノーマライズ処理

処理の流れは以下のとおり。

../../../../_images/flow37.png

6.2.15.2. モジュール一覧

<dependency>
  <groupId>com.nablarch.framework</groupId>
  <artifactId>nablarch-fw-web</artifactId>
</dependency>

6.2.15.3. 制約

マルチパートリクエストハンドラ より後ろに配置すること
このハンドラはリクエストパラータにアクセスする。 このため、 マルチパートリクエストハンドラ よりも後ろに設定する必要がある。

6.2.15.4. 標準で提供しているノーマライズ処理

標準では、以下のノーマライズ処理を提供している。

  • リクエストパラメータの前後のホワイトスペースを除去するノーマライザ( TrimNormalizer ) [1]

6.2.15.5. ノーマライズ処理を追加する

このハンドラはデフォルト動作で、リクエストパラメータの前後のホワイトスペース [1] を除去するノーマライザが有効となっている。

プロジェクト要件で、ノーマライズ処理を追加する場合には、 Normalizer の実装クラスを作成し、本ハンドラに設定する。

以下に例を示す。

ノーマライザの実装例
public class SampleNormalizer implements Normalizer {

    @Override
    public boolean canNormalize(final String key) {
      // パラメータのキー値にnumが含まれた場合は、そのパラメータをノーマライズする
      return key.contains("num");
    }

    @Override
    public String[] normalize(final String[] value) {
      // パラメータ中のカンマ(,)を除去する
      final String[] result = new String[value.length];
      for (int i = 0; i < value.length; i++) {
          result[i] = value[i].replace(",", "");
      }
      return result;
    }
}
コンポーネント設定ファイルに定義する

以下の設定例のように、適用したいノーマライザを設定する。 複数のノーマライザを設定した場合、より上に設定したものから順次ノーマライズ処理が実行される。 このため、ノーマライズ処理に順序性がある場合には、設定順に注意すること。

<component class="nablarch.fw.web.handler.NormalizationHandler">
  <property name="normalizers">
    <list>
      <component class="sample.SampleNormalizer" />
      <component class="nablarch.fw.web.handler.normalizer.TrimNormalizer" />
    </list>
  </property>
</component>

補足

ノーマライザを設定せずに、以下のようにハンドラを設定した場合、デフォルトで提供される前後のホワイトスペースを除去するノーマライザが自動的に適用される。

<component class="nablarch.fw.web.handler.NormalizationHandler" />
[1](1, 2) ホワイトスペースの定義は Character#isWhitespace を参照