入力された値をチェックする

書式

@Validations(requiredStrings = {
        // チェックしたい値用のValidations
        @Validations(fieldName = "変数名", message = "エラー時のメッセージ")
    })

Validationsにはチェックしたい値用のValidationsクラス名を記述します(下の表を参照してください)。
変数名はチェックしたい値が入っている変数名になります。
エラー時のメッセージはValidationsでのチェックが通らなかった場合に表示する文字列です。

importファイル

参照ライブラリ:xwork-2.1.2.jar

import com.opensymphony.xwork2.validator.annotations.Validations;
import com.opensymphony.xwork2.validator.annotations.XXX

XXXはチェックしたいクラス名を入れます(下の表を参照してください)。 (※eclipseではこのimportについて補完できないようですので、手動で設定する必要があります)

また、Validationsはチェックが通らなかった場合に戻り値としてinputを返すため、 inputの遷移先を指定してください。指定しないとエラーになります。設定方法は 「遷移先を設定する」を見てください。
例:@Result(name = "input", value = "index.jsp")

デフォルトで用意されているValidations

Validations何をチェックしたいか備考
BooleanValidatorフィールドの値が boolean 値であること
EmailValidatorRFC822 形式のアドレスであることJavaMail API が必要
RegexValidator正規表現にマッチすること
RequiredStringValidatornull でなく、空 (空白を含む) でないこと
RequiredValidatornull でないこと
SinglebyteStringValidator半角文字列であるかどうか
URLValidatorURL を表す文字列であること
X500PrincipalValidatorRFC 1779 形式または RFC 2253 形式の X.500 識別名であること

使い方

ActionSupportを継承したクラスを作成し、このクラス内でチェックするメソッドの前にValidationsを追加します。 (以下の例は、入力文字列が「null でなく、空 (空白を含む) でないこと」をチェックし、 チェックするメソッドがexecute()の場合です)

import com.opensymphony.xwork2.validator.annotations.Validations;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator
...
@Result(name = "input", value = "index.jsp")
...
    @Validations(requiredStrings = {
        @RequiredStringValidator(fieldName = "numbers", message = "入力されていません")
    })
    public String execute() throws Exception {
    ...

入力チェックが通らなかった場合にはメソッドは実行されません。 (上記の例では、numbersに値が入っていない場合はexecute()メソッドは実行されません)

独自にチェックしたい項目がある場合

独自にチェックしたい項目などがある場合はvalidate()をオーバーライドします。

    public void validate() {
        // ここに判定処理を追加する
    }