- ベストアンサー
Struts:可変個数のテキストボックスの値を取得したい
お世話になっております java 1.4.1 struts 1.1 Eclipse2.1.3 上にてwebアプリケーションの開発を行っております DynaActionFormを利用し、配列型のテキストボックスをsubmitする画面を作成しております。 String型の配列は取得できたのですが、 struts-config.xmlにて配列の要素数を指定しております。 テキストボックスの数は可変となる為、要素数を固定値で指定したくなく、 変わりにArrayListを使用出来ないかと考えております。 struts-config.xmlの対象のform-propetyエレメントのtype属性を"java.util.ArrayList" と変更してみたのですが、submitした時に アクションクラスのexecuteメソッドに来る前に 例外が発生しており、 「java.lang.IndexOutOfBoundsException: Index: 19, Size: 0」 といった例外がブラウザに表示されております。(文字制限の為、省略しております。) ArrayListを使用する場合でも要素数の定義などが必要ということなのでしょうか。 また、Stringの配列で要素数を指定しなくても取得する方法はございませんでしょうか。 当方、Strutsがまだ勉強し始めな状態のため、説明が至らない部分がございますことをご容赦ください。 ご教授の程、何卒よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
情報が少ないのでなんとも言えませんが、 DynaValidatorFormに配列の要素数は指定しなくてもいいです。 Submitされた値は、配列ごとプロパティにセットされるので、インデックスを指定してセットされることはありません。 もしくは、JSPのほうでインデックスを指定した名前になっているのかもしれません。 まずは、エラーの箇所を特定してみてはどうでしょうか。 Strutsはオープンソースなので、ソースを読んでみるのが一番の解決になるでしょう。
その他の回答 (1)
使ったことはありませんが、indexed propertiesを利用することでできるようです。 以下URLの「Dynamic Indexes for Indexed Properties」の項あたりが参考になりませんか? http://www.jajakarta.org/struts/struts1.2/documentation/ja/target/faqs/indexedprops.html
お礼
ご返答いただきましてありがとうございます。 報告が遅くなってしまい、申し訳ありません。 緊急を要した作業だった為、結局ArrayListではなく Stringの配列での取得で対応することになりました。 作業が落ち着いたら当該要件について、もう少し調査しようと思います。 ありがとうございました。
お礼
ご返答いただきましてありがとうございます。 報告が遅くなってしまい、申し訳ありません。 緊急を要した作業だった為、結局ArrayListではなく Stringの配列での取得で対応することになりました。 作業が落ち着いたら当該要件について、もう少し調査しようと思います。 ありがとうございました。