6.2.15. ノーマライズハンドラ¶
クライアントから送信されるリクエストパラメータをノーマライズするハンドラ。
本ハンドラでは、以下の処理を行う。
- リクエストパラメータのノーマライズ処理
処理の流れは以下のとおり。
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 を参照 |