- PR -

DynaValidatorActionForm 配列指定について

1
投稿者投稿内容
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2006-04-25 15:13
お世話になります、現在下記のように設定した
入力チェックがあるのですが struts-config.xmlで指定してるtypeで
String[]でくるデータをチェックしたいのですがうまくいっていません

調べたところ struts-config.xmlにて設定できるようなので以下のように
コード:

<form-bean name="HogeForm" type="org.apache.struts.validator.DynaValidatorActionForm">
<form-property name="id" type="java.lang.String[]" initial="'0','0','0'"/>
<form-property name="name" type="java.lang.String[]" initial="'0','0','0'" />
</form-bean>


また size指定でも可能なようなのでともに試しましたが
正常値を入力してもエラー処理に入ってしまいます。

このような処理を行う場合、validateメソッドを実装するしかないでしょうか?
設定で行うにはどのようにすればいいか、調べていたのですがわかりませんでした

ただ上記方法でうまくいったとしても、配列サイズは可変ですので
validateを実装しなければならないでしょうか? それともここで指定している
Initialやsizeは初期化用でしかないから、都度上書かれるということでしょうか?


「編集」発見 これかな??


[ メッセージ編集済み 編集者: n.w 編集日時 2006-04-25 15:31 ]
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2006-04-25 20:19
自己解決

参考にしたリンクを元に以下のような方法で対応できましたので
載せておきます

1.FieldChecksクラスを継承した独自クラスを作成
2.String[] 対応させたいメソッドを作成(例: Integer → validateIntegerArray)
3.validator-rules.xml に追加2にて追加 した情報を追加 クラス名、メソッド名など
4.2で作成したメソッドにて、
コード:

Object temp = ((DynaActionForm) bean).get(field.getProperty());
String[] value2 = isString(temp) ? new String[] {(String) temp } : (String[]) temp;

]
String[] のオブジェクトを取得しbeanへ代入し サイズ分ループさせながら
chkFlg = super.validateInteger(bean, va, field, errors, validator, request);
と呼び出し 戻り値を判定

ざっくりとですが 上記方法で実現することができました



[ メッセージ編集済み 編集者: n.w 編集日時 2006-04-25 20:29 ]
1

スキルアップ/キャリアアップ(JOB@IT)