- - PR -
Struts Validator ルール作成時に、配列を取得するには?
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-10-03 01:54
現在、新たな検証ルールを作成しているのですが、名前が同じフォームが
複数ありまして、その値を検証するにはどうすればよいか悩んでいます。 名前の重複がなければ、
で、値を取得できるのですが、名前が重複しており、値が配列になる ような場合でも、その配列を取得して検証することは可能でしょうか? もし、可能であればどのように取得したらよいでしょうか? よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2003-10-03 02:45
こんばんは。
Kiriko@有給休暇モードです
ここでおっしゃっている名前とは テキストフィールド、チェックボックスなどの 入力部品の名前ということでよろしいですよね。
チェックボックスなどのフォームオブジェクトの名前が重複する場合、 重複した回数validateメソッドが実行されるのか、 validateメソッドは1回のみ実行され、validateメソッドのパラメータに 配列として値が渡されるのかは実験していないのでわかりません (もう眠いので^^)。 実験の方法としては、validateメソッドで ログ出力するようにして、複数の値を持つリクエストパラメータに 対して何回validateメソッドが呼ばれるか調べればよいと思います。 また、もし配列として値がvalidateメソッドに 渡されるのならば、 次のようなコードを追加すれば取得可能かと思います。 Collectionで渡されるのかもしれませんが・・・
実験結果のご報告をお待ちしております。 ※重複回数validateメソッドが呼ばれると予想しています^^ [ メッセージ編集済み 編集者: Kiriko 編集日時 2003-10-03 04:23 ] | ||||||||||||
|
投稿日時: 2003-10-03 11:13
Kiriko さん、早速のご返信ありがとうございます。
◆ログと Eclipse のデバッグによる実験結果 パラメータの名前が重複する場合、validate メソッドが呼ばれるのは 一回のみで、配列として値が渡されるようです。 ◆Validator 内での配列の取得に関して デバッグで public static boolean validatexxxx() メソッドに渡される 引数を調べてみましたが、Object bean には、検証の対象となる ActionForm が渡されていました。(知らなかった それで、"data" という名前のテキストボックスが複数ある場合、
としてやると、配列の値を取得することが出来ました。 でも、これって汎用性がないですよね。 ValidatorUtil にも配列を返してくれるようなメソッドは無いし・・・。 StrutsValidator には (bean, field.getProperty()) を渡せば、 配列の値を返してくれるような機能はないのでしょうか? 何か良い方法がありましたら、ご教授下さい。 よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2003-10-03 12:31
はじめまして。
PropertyUtilsを使って、以下のようにやってます。 Object obj = PropertyUtils.getProperty(bean, field.getProperty()); String[] values = (String[])obj; お役に立ちますか? | ||||||||||||
|
投稿日時: 2003-10-03 12:53
おお!
あらさん、ありがとうございます。
この方法でうまくいきました!! ありがとうございました。<(_ _)> | ||||||||||||
|
投稿日時: 2003-10-03 16:44
こんにちは。
アレクさん実験結果を報告していただいて ありがとうございます。 無事解決されたようですね。
予想がはずれた^^;
私も知りませんでした。 ActionFormだったとはかなりびっくりしました^^ あらさんの投稿も勉強になりました。 ありがとうございました。 (独り言) 「なんか情報をTakeしてばっかりだなあ。 情報交換の場である会議室にGiveしなければ。。。>自分」 | ||||||||||||
1
