土曜の昼、学校帰りの昼メシの思い出

Strutsを使っているWEBシステムで、taglibを使用せずに、情報を受け渡ししたいです。


..やろうとして挫折したこと

..1.setAttributeでの受け渡し
....setAttributeは画面のロード時にしか実行できないようで、無理でした。
....(正確には、RadioボタンのOnLoadイベントで、JSPからはsetAttributeを実行できない。)

..2.form上のコントロールのValueでの受け渡し
....input.type="radio".name="radio_object".value="値"
....のようにして、次の画面遷移先に渡そうとしましたが、
....struts-config.xml.で記述している.formクラスに対し、
....taglib.を使用して、formクラスに値設定する方法でなければ、
....情報を受け渡しできないようでした。

taglib は、内部的には何らかの方法で、formクラスに値を受け渡ししているはずですし、
その方法を、jsp上で記述する方法もあると思っているのですが、
無理なのでしょうか?

A 回答 (2件)

Strutsを使用しているのにカスタムタグを使用しないというのがよくわかりませんが、何かしらの考えがあってのことだと思いますが・・・。



2の方法で
<form action="・・・" method="POST">
<input type="radio" name="radio_object" value="1">
</form>

となっている場合、アクションで
request.getParameter("radio_object")
で取得できないでしょうか?

これならアクションフォームの内容には関係なく取得できると思います。
    • good
    • 1
この回答へのお礼

ありがとうございます。
radioボタンではなく、checkboxでうまくできました。
(radioボタンでは今チャレンジしていますが、うまくいくと思います。)

> Strutsを使用しているのにカスタムタグを使用しないというのがよくわかりませんが、何かしらの考えがあってのことだと思いますが・・・。
formクラスに依存させない形にしたかったためです。
具体的には、Map型の配列でデータをインターフェースして、
Mapの中に何個の要素が入っていようとも、
動的にJSPで情報を表示させたかったためです。

たとえば、
(1)Mapに、社員ID、社員名、所属部署というようなデータがある。
(2)Mapに、注文ID、商品ID、商品名、個数というようなデータがある。
というな情報を、その都度、要素数にあわせてHTMLのテーブルを作成したいということをしたいためです。


> radioボタンではなく、checkboxでうまくできました。
> (radioボタンでは今チャレンジしていますが、うまくいくと思います。)

※なお、radioではなく、checkboxで先に試したのは、
valuesに値が入っているもののみ、
setAttributeがなされるようだったためです。

お礼日時:2009/04/20 13:43

>radioボタンではなく、checkboxでうまくできました。



複数のものからひとつを選ぶ→ラジオボタン
複数のものから複数のものを選ぶ→チェックボックス

の使い方が基本ですが、ラジオボタンで実装予定のものを
チェックボックスで実装しても問題ないでしょうか?

チェックボックスにしたことで複数選ばれ、新たなバグは発生しないかもう一度確認してみてはいかがでしょうか。


>※なお、radioではなく、checkboxで先に試したのは、
>valuesに値が入っているもののみ、
>setAttributeがなされるようだったためです。
確かにチェックされていないものはサブミットされません。
ただし、チェックが入っていいたものからチェックをはずすと
サブミットされないので十分に検証したほうがいいと思います。
(resetメソッド利用など)

例)
<input type="checkbox" value="1" checked>
をチェックをはずしてサブミットしてもチェックをはずされたことがわからない。

参考URL:http://okwave.jp/qa2311483.html
    • good
    • 0
この回答へのお礼

ありがとうございます。

> > Strutsを使っているWEBシステムで、taglibを使用せずに、
> > 情報を受け渡ししたいです。

> radioボタンではなく、checkboxでうまくできました。

すみません、表現が不適切でした。
taglibを使用せずに情報を受け渡しができることを確認でするために、先にcheckboxで確認したという意味でした。


>※なお、radioではなく、checkboxで先に試したのは、
>valuesに値が入っているもののみ、
>setAttributeがなされるようだったためです。

本当は、最初からradioで確認をしたかった状況でした。
しかしながら、radioボタンの仕様として考えられることとして、
(1)checked になっているものだけを渡すのか?
(2)checkedプロパティがtrue になっているものだけを渡すのか?
(3)values に値が入っているものだけを渡すのか?
(4)values にchecked という文字列が入っているものだけ渡すのか?
などなどと、色んな仕様が考えられたので、(↑まぁ、さすがにありえないだろうなというのも混じってますが、、、)

仮説として『もしや requestオブジェクトには、valueしかわたらないのだろうか?』という風に考え、
実は実績があったcheckboxで、先に確認をしたみたという状況でした。


なお、最終的には、radioボタンで情報を受け渡しをしているのですが、結局、radioボタンのvaluesに、各選択肢のIDを設定し、
getParameterValuesで、各選択肢のIDを取得し、
そのIDに紐付くデータを、次の処理に渡しているという感じになってしまいました。

↑下記のようなことをしようとしていたため。
radio1、購入対象商品ID、購入対象商品、価格
radio2、購入対象商品ID、購入対象商品、価格

ありがとうございました。

お礼日時:2009/04/21 12:06

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

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


おすすめ情報