dポイントプレゼントキャンペーン実施中!

JSPに複数のhidden(動的に数が変化)があり、これらの値をformのlist(配列)に詰めたいです。
尚、nameの値は別の処理でjavascriptを使いvalueを変化させるため連番であれば構わないです。です。

~~~JSP~~~
<input type="hidden" name="str1" value="a"/>
<input type="hidden" name="str2" value="b"/>
<input type="hidden" name="str3" value="c"/>
~~~~~~~~
上のJSPから下記のFORMに詰めたい
~~~form~~~
private List strList;

public List getStrList(){
return strList;
}
~~~~~~~~

又、こちらで調べたところ下記のようにすればいけるようですが欲しい値は一つのためBeanを使用しなくても実現可能ではないかと思い、質問させていただきました。
よろしくお願い致します。

~~~JSP~~~
<input type="hidden" name="testArray[0].str" value="a"/>
<input type="hidden" name="testArray[1].str" value="b"/>
<input type="hidden" name="testArray[2].str" value="c"/>
~~~~~~~

~~~FORM~~~

private List list;
public TestBean getTestA(int iIndex) {
while (this.list.size() <= iIndex) {
this.list.add(new TestBean ());
}
return ( TestBean ) this.list.get(iIndex);
}
public Object[] getTestArray() {
return list.toArray();
}

public static class TestBean {
private String str = "";
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}

A 回答 (2件)

うーむむ・・・。

こゆうことでしょうか。
アドバイスの方向が間違ってたらすいません。
(※実行してないため、コードはあくまで参考程度で。)

----Jsp側
<html:hidden property="strArray[0]" value="a" />
<html:hidden property="strArray[1]" value="b" />
<html:hidden property="strArray[2]" value="c" />
....

----Form側
String[] strArray;
List<String> strList;
public void setStrArray(String[] strArray) {
____this.strArray = strArray;
____this.strList = Array.asList(strArray);
}
public String[] getStrArray() {
____return this.strArray;
}
public List<String> getStrList() {
____return this.strList;
}
    • good
    • 3

「formのlist(配列)」ってどっちなんでしょうか。


私の読解力が足りないのか、何をしたいのかよくわかりません。
とりあえず画面のリクエストから直接サーバのJVM内に
直接Listを実装したオブジェクトを生成することはできません。

画面から送られてくるデータをサーバ側でListで扱うには、
それ相応のオブジェクト生成や設定処理が必要になります。
Strutsであれば、Form(またはLogic)内で新規に生成したListオブジェクト、
または他スレッドと同期するシングルトンのListオブジェクトに対し
リクエストから受け取ったデータを詰めるのが一般的です。

この回答への補足

回答ありがとうございます。
そして、文章がわかりずらく申し訳ございません。
kana_mさんの意見を取り入れ、やりたい事を記述してみます。

下記のようなJSPがあり、submitしてActionに来たときにformのListにstr1~str3がstrListに入っているという状態にしたいです。
実際はJSP上のstrは動的に個数が変化するため、個別のsetterを作成するのは避けたいという状況です。
そのための、jspのinputタグの記述方法、setterの記述方法を知りたいです。
わかりずらかったら再度言っていただけると幸いです。
よろしくお願い致します。

~~~JSP~~~
<input type="hidden" name="str1" value="a"/>
<input type="hidden" name="str2" value="b"/>
<input type="hidden" name="str3" value="c"/>
~~~~~~~~
上のJSPから下記のようなFORMに詰めたい
(str1、str2、str3を取得する際に全てsetStrを呼びたい)
~~~form~~~
private List strList = new ArrayList();
public void setStr(String str){
strList.add(str);
}

public List getStrList(){
return strList;
}
~~~~~~~~

補足日時:2009/10/21 12:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A