- PR -

《Struts》 html:checkbox タグについて

投稿者投稿内容
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-06-22 10:58
下記のような画面を想定しています。

商品A □□□□□□□□□□
商品B □□□□□□□□□□
商品C □□□□□□□□□□

※□はチェックボックスのつもりです。

その際の、StrutsでのJSP側での <html:checkbox>の書き方とそれを受けるActionFormの書き方について、うまく動作するように書くことができておりません。

商品が動的に増加するので、Strutsタグの property属性の名前を"item_a"のように固定すると、それを受けるActionFormの属性がgetItem_aのように固定で書けません。

<html:checkbox property='<%= "item_a[" + i +"]" %>' のように、配列によって書きたいのですが、これもうまくいきません。

どなたか、ご経験のある方でアドバイスをご教授いただけると助かります。




[ メッセージ編集済み 編集者: NV 編集日時 2006-06-22 11:02 ]
YK
会議室デビュー日: 2002/08/13
投稿数: 6
投稿日時: 2006-06-22 11:53
html:checkboxはboolean型かString型のプロパティと関連付けて使用するのでhtml:checkboxではプロパティを配列と関連付けることはできないと思います。代わりにhtml:multiboxを使用しては如何ですか?
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-06-22 12:07
早速のお返事ありがとうございます。

html:multiboxも試しておりますが、うまくいっておりません。

現在試行錯誤中です。
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-06-22 12:31
途中経過報告です。

どうやらActionFormの方の書き方に問題があるようでした。

private ArrayList item = new ArrayList();
getItem(){}

 ↓

private String[] item = String[10];
getItem(){}

で、動作すると想定してます。

そこで新たな質問として html:multiboxタグで生成した値をActionFormで受け取る際、どのような型の変数が良いのでしょうか?設計にも拠ると思いますが。

Stringの配列だと、サイズが気になりますし、ArrayListでうまくいかなかったものでして・・・。

また、上記の場合、1つの商品(item)はActionFormに定義できますが、複数(数不定)の商品に対応する為には、どのような方法がございますでしょうか?


よろしくご教授願います。



[ メッセージ編集済み 編集者: NV 編集日時 2006-06-22 12:57 ]
YK
会議室デビュー日: 2002/08/13
投稿数: 6
投稿日時: 2006-06-22 13:38
私はmultiboxはString型の配列しか使ったことがありません。
MultiboxTagのソースも見てみましたが
BeanUtil.getArrayProperty()が使用されていましたので
String型の配列以外は使用できないと思います。
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-06-22 14:06
アドバイスありがとうございます。

では、問題はどのように、複数のチェックボックスを識別するかということになるのでしょうね。

   0 1 2 3 4 5 6 7 8 9
商品A □□□□□□□□□□
商品B □□□□□□□□□□
商品C □□□□□□□□□□
 :
 :

商品数は無数にあるので、

<html:maltibox property="item_a[]" value="0...">
<html:maltibox property="item_b[]" value="0...">

とすると、定義していないので当然ActionFormに怒られてしまいます。

かなり、悩みどころです。
どのように、設計すると良いのでしょうか?

質問ばかりで申し訳なく思っております。
YK
会議室デビュー日: 2002/08/13
投稿数: 6
投稿日時: 2006-06-22 15:11
設計ではなくhtml:multiboxの使い方の理解不足のような気がします。
個々の商品の識別は文字列でするしかないと思います。

動的にcheckboxを生成する方法や
html:multiboxの使い方については
下記の記事が参考になると思いますので参考になさってください。
http://www-128.ibm.com/developerworks/java/library/j-sr3.html

NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-06-22 15:59
ありがとうございます。
とても助かります。

http://www-128.ibm.com/developerworks/java/library/j-sr3.html

基本的に私の認識はズレていないと思います。

問題点を上記例で説明しますと、ActionForm内のmountains配列を、無数の配列として動的に増やさなければならないと言うことです。

 CheckboxTestForm extends ActionForm{
  private String[] mountains_a = {}
  private String[] mountains_b = {}
  private String[] mountains_c = {}
   :
 以下無数
 }

JSP側では、iterateを使ってmountainsが動的に変化します。

 mountain_a □□□□□□□□□
 mountain_b □□□□□□□□□
 mountain_c □□□□□□□□□
  :
  :
 以下無数

その際の、実装方法(各チェックボックスの値取得)が迷い道に入っております。
識別方法に良い方法がないかということです。

説明下手ですみません。
以上、よろしくお願いいたします。


[ メッセージ編集済み 編集者: NV 編集日時 2006-06-22 16:01 ]

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