uji:validateタグではユーザ定義のチェックを呼び出すことができます。 uji:validateタグは以下のように記述します。例ではmycheckという利用者定義チェックを使っています。
<uji:validate event="blur" custom="mycheck" > エラー時の処理 </uji:validate>
customアトリビュートは、typeやlengthなどの他のvalidateタグのアトリビュートと同時に使用することはできません。
これに対応する処理はJavaで作成します。以下の手順で作成します。
拡張クラスの作成
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) {"; } }
ファクトリクラスでの拡張クラスの生成
利用者のファクトリクラスに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.2 初期化パラメタ”を参照してください。
uji_length
uji_length_pre
uji_maxLength
uji_maxLength_pre
uji_minLength
uji_minLength_pre