入力された値をチェックする
書式
@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 値であること | |
EmailValidator | RFC822 形式のアドレスであること | JavaMail API が必要 |
RegexValidator | 正規表現にマッチすること | |
RequiredStringValidator | null でなく、空 (空白を含む) でないこと | |
RequiredValidator | null でないこと | |
SinglebyteStringValidator | 半角文字列であるかどうか | |
URLValidator | URL を表す文字列であること | |
X500PrincipalValidator | RFC 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() {
// ここに判定処理を追加する
}