ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

16.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;
  }

注意

ValidateScriptGeneratorクラスの以下のメソッドをオーバライドしてデフォルトのJavaScript生成パターンを変更した場合、初期化パラメタuji.taglib.awareOfSupplementaryCharの指定は無効となり、オーバライドしたメソッドが出力するJavaScriptが有効となります。uji.taglib.awareOfSupplementaryCharについては“13.3 初期化パラメタ”を参照してください。

  • uji_length

  • uji_length_pre

  • uji_maxLength

  • uji_maxLength_pre

  • uji_minLength

  • uji_minLength_pre