Struts2 validation
さて、かるくvalidationを触ってみた。
とりあえず、覚書程度に書いておく。
ここでのvalidationはアノテーションを使わないバージョン。
まず、validation.xmlは、
クラスと同じところにクラス名-validation.xmlを用意すればいい。
例えば、SampleActionのvalidationなら
SampleAction-validation.xmlだ。
あとは、struts.xmlのvalidationがあるアクションに
name="input"
のバリデーション失敗時に飛ぶ先を設定してやれば良い。
それと忘れちゃいけないのが、Actionの変更。
ActionSupportをextendsしておかないとログにvalidation-errorが吐き出されるだけで実際何も処理が行われない。
さて、これでvalidationの設定は完了。
実行すると、キチンと出るはず。
ただ、Struts2.0.6では、requiredのparam name="trim"とか
文字列の長さでのvalidationのparam="max"
などはognkExceptionってのがでて怒られる。
どうも、Struts2側のバグで最新版では直っているようだが、体当り修正らしい。今のところは放っといて良いと思う。(*)
それと、Actionの一部のメソッド実行時のみvalidationを働かせるように、@SkipValidationというアノテーションがあるが、
これを使うと、まったくvalidationが利かなくなる。これもバグかもしれない。アノテーションでvalidationを設定していれば問題ないのかもしれない。
struts.xml側でactionの定義を分割するのが一番なのかもしれない。
そのときは、
validation.xmlの名前が、
クラス名-アクション名−validation.xmlとなるので、これまた注意だ。
例)
クラス名:SampleAction
アクション名:SampleSubmit
の場合、
SampleAction-SampleSubmit-validation.xmlとなる。
(*)2007/6/30補足
Stringフィールドにrequiredを設定しているのがそもそもの間違いだった。
Stringフィールドのrequireは"requiredstring"を使う。