- PR -

ActionFormのプロパティにString型の二次元配列を使いたい

1
投稿者投稿内容
優子
常連さん
会議室デビュー日: 2004/03/26
投稿数: 39
投稿日時: 2005-03-10 10:46
今日は、優子です。
上記の件で質問があります。

ActionFormのプロパティに配列を用いようとしていて、一次元配列のプロパティは問題なく使えるのですが、
二次元配列のプロパティを用いようとすると上手くいきません。

例として、ActionForm内にsampleというString型の二次元配列プロパティを宣言して、
private String[][] sample = new String[10][10];

getter/setter
public String[][] getSample() {
return sample;
}
public void setSample(String[][] strings) {
sample = strings;
}


jspから送信するform内の要素を以下のようにしてみると
<input type="text" name="sample[0][0]" value=1 size=10 >
<input type="text" name="sample[0][1]" value=2 size=10 >

BeanUtils.populate()メソッドでエラーが発生してしまいました。


ちなみに、jsp側で
<input type="text" name="sample" value=1 size=10 >
<input type="text" name="sample" value=2 size=10 >
とするとエラーは発生しませんが、値の挿入のされ方が
sample[0]に1が、sample[1]に2が挿入されてしまいます。

二次元配列を用いる方法で、sample[0][0],sample[0][1]といった具合に挿入することは出来ますでしょうか。
ご意見をよろしくお願い致します。


環境
OS WIN XP
TOMCAT 5.0
STRUTS 1.2
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2005-03-10 13:01

Beanに二次元配列は使えないでしょう。

マニュアルに載ってた気がします。
ViewHelperなど使って、違う方法を検討されては?
ピンクの恐竜
常連さん
会議室デビュー日: 2005/02/01
投稿数: 42
投稿日時: 2005-03-11 00:24
どうしても2次元配列にしなければいけない理由が無いのであれば、
私は「1行をBeanで表現して、それをListに格納する」をお勧めします。

同じように2次元配列ちっくに表現はできます。
表示は<logic:iterator>タグを使えば綺麗に表現できるし、
値もちゃんとActionFormにも送信できます。

確か以下のような感じでできます。
コード:

--JSP---
<logic:iterate id="name" name="TestForm" property="list" >
<html:text name="name" property="propertyA" indexed="true" />
<html:text name="name" property="propertyB" indexed="true" /><br>
</logic:iterate>


--Form--
private List list;

listのアクセッサー;

public TestBean getName(int index) {
return (TestBean) list.get(index);
}


--Bean--

private String propertyA;
private String propertyB;

それぞれのアクセッサー



[ メッセージ編集済み 編集者: ピンクの恐竜 編集日時 2005-03-11 00:27 ]
優子
常連さん
会議室デビュー日: 2004/03/26
投稿数: 39
投稿日時: 2005-03-11 01:42
さくさん、ピンクの恐竜さん、お返事ありがとうございました。
参考にさせていただきました。
1

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