- - PR -
StrutsでFormのList要素を検証する
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-11-21 11:18
StrutsのValidatorについての質問です。よろしくお願いします。
BeanのListを持ったFormをValidatorでチェックすることはできないでしょうか? 複数レコードを一括で入力するようなフォームです。 上手く説明しづらいので、コードを書きます。
このようなフォームの場合、各レコードのフィールドをValidatorで検証することは、 できないでしょうか? | ||||
|
投稿日時: 2007-11-21 12:46
よくわかりませんが、
Validatorのruleをオリジナルで作ればいいんじゃないですか? もしくはActionFormのvalidateメソッド実装とか。 | ||||
|
投稿日時: 2007-11-21 16:24
レスどうもです。
自分で作れば確かにできると思いますが、 Strutsに元からその機能があるなら、それを使いたいと思って、 質問させてもらいました。 やっぱり自分で作るしかないですかね。 | ||||
|
投稿日時: 2007-11-21 17:14
DynaActionForm以外で利用可能かどうかはわかりませんが、Validatorプラグインを利用する方法ではいかがでしょうか?
http://www.atmarkit.co.jp/fjava/rensai3/struts05/struts05_1.html validation.xmlの定義は以下が参考になりそうです。 http://loafer.jp/mixi/diary/class.xsp?2007-05-14-23-57 | ||||
|
投稿日時: 2007-11-22 11:56
上手く伝わっていないようなので、少し補足します。
Validatorプラグインは DynaActionForm以外のFormでも使えます。 しかし、調べて見つかるのは、主にStringのフィールドに対して検証を行うものです。 (例えば10文字以上はエラーとか、半角英数以外はエラーとか) 上に書いた場合では、ListFormのフィールドはStringでなくVectorです。 VectorがValueBeanのオブジェクトを格納し、 ValueBeanが入力項目に対応するStringを持つという二階層の構造になっています。 こういう場合にValidatorプラグインを適用する方法があるのか? というのが今回の質問の趣旨になります。 | ||||
|
投稿日時: 2007-11-22 13:25
バージョンを指定されていないので不確かですが、valueList[].nameでどうでしょうか?
http://struts.apache.org/1.2.9/userGuide/dev_validator.html 「Designing Complex Validations with validwhen」 にvalidwhenのサンプルとして記載されています。 [ メッセージ編集済み 編集者: ykSiR 編集日時 2007-11-22 13:26 ] | ||||
|
投稿日時: 2007-11-22 16:58
ykSiRさん、ありがとうございます。
挙げられたサンプルを参考に調べてみたところ、 indexedListPropertyというのを使えば配列やListの要素を検証できそうです。 ただ、Listの要素が一つでも検証にひっかかると、 それ以降の要素は検証されないという制約があるようです。 結局、やはりオリジナルで作ることになってしまうかもしれませんね。 | ||||
|
投稿日時: 2007-11-22 22:00
indexedListPropertyの例を紹介したつもりでしたが言葉足らずでした。
今読み返すと、Validatorプラグインの存在と、その定義(validation.xml)の説明をしているように見えますね。失礼いたしました。 |