Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第3部 Webアプリケーションの開発> 第15章 UJIタグを使ったプログラミング> 15.3 クライアントスクリプト

15.3.3 ユーザ定義のチェック

uji:validateタグではユーザ定義のチェックを呼び出すことができます。 uji:validateタグは以下のように記述します。例ではmycheckという利用者定義チェックを使っています。

<uji:validate event="blur" custom="mycheck" >
   エラー時の処理
</uji:validate>

customアトリビュートは、typeやlengthなどの他のvalidateタグのアトリビュートと同時に使用することはできません。
これに対応する処理はJavaで作成します。以下の手順で作成します。
1) 拡張クラスの作成
ValidateScriptGeneratorクラスを継承したクラスを作成します。 利用者定義チェック(ここではmycheck)と同名のメソッドを作成します。 このメソッドで、生成するスクリプトの内容を返すようにします。 文字列はJavaScriptのif文で、"if(...) {"または"...; if(...) {"の形にする必要があります。 また、チェック対象項目は変数targetで参照できます。 例を示します。

package somepackage;
public class MyScriptGenerator extends com.fujitsu.uji.script.ValidateScriptGenerator
{
   public String mycheck() {
       return "if(target.value.length != 8) {";
   }
}

2) ファクトリクラスでの拡張クラスの生成
利用者のファクトリクラスにValidateScriptGeneratorFactoryインタフェースをインプリメントします。ファクトリクラスの作成方法は3.1節を参照してください。 newValidateScriptGeneratorメソッドで、1)で作成したクラスを返すように実装します。 例を示します。

package somepackage;
import com.fujitsu.uji.script.ValidateScriptGenerator
public class MyFactory extends com.fujitsu.uji.http.HttpFactory
                    implements com.fujitsu.uji.script.ValidateScriptGeneratorFactory
{
   public ValidateScriptGenerator newValidateScriptGenerator() {
       return new MyScriptGenerator();
   }
}

注意
拡張クラスを使用する場合は、その前にuji:dispatchタグが1回以上実行されている必要があります。

ポイント
デフォルトのJavaScript生成パターンを変更したい場合には、拡張クラスで必要なメソッドをオーバライドします。たとえば、lengthは以下のように実装されています。これらのメソッドをオーバライドすると出力パターンを変更することができます。

// if文の前に必要な処理
  public String uji_length_pre(String length) {
    return null;
 }
// if文内の判定文
  public String uji_length(String length)  {
    return "target.value.length != " + length;
  }


目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005