- PR -

画像ボタンでのDispatchアクションの方法は?

投稿者投稿内容
ぼら
会議室デビュー日: 2003/09/11
投稿数: 6
投稿日時: 2004-01-23 21:07
お世話になります。
現在Struts1.1の LookupDispatchAction でフォームに複数のボタンを
以下のように配置しています。
<input name="actions" type="submit" value="追加する">
<input name="actions" type="submit" value="削除する">
ただ、submitボタンの場合は問題なく動くのですが、
画像ボタンにするとIEでは「ハンドラパラメータがありません」とサーバーがエラーを
を出し、うまく動きませんでした。(Netscape7.1では動きました)
<input name="actions" type="image" src="insert.gif" value="追加する">
<input name="actions" type="image" src="delete.gif" value="削除する">

画像ボタンを使いDispatch系アクションを実現するいい方法があれば教えて
いただけませんか? 宜しくお願いいたします。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2004-01-27 16:50
#救済活動

引用:

ぼらさんの書き込み (2004-01-23 21:07) より:
お世話になります。
現在Struts1.1の LookupDispatchAction でフォームに複数のボタンを
以下のように配置しています。
<input name="actions" type="submit" value="追加する">
<input name="actions" type="submit" value="削除する">
ただ、submitボタンの場合は問題なく動くのですが、
画像ボタンにするとIEでは「ハンドラパラメータがありません」とサーバーがエラーを
を出し、うまく動きませんでした。(Netscape7.1では動きました)
<input name="actions" type="image" src="insert.gif" value="追加する">
<input name="actions" type="image" src="delete.gif" value="削除する">

画像ボタンを使いDispatch系アクションを実現するいい方法があれば教えて
いただけませんか? 宜しくお願いいたします。



サーバへのリクエストパラメータは、IEとNNでまったく同じでしたか?
ぼら
会議室デビュー日: 2003/09/11
投稿数: 6
投稿日時: 2004-01-27 23:15
引用:

ばんさんの書き込み (2004-01-27 16:50) より:
#救済活動

サーバへのリクエストパラメータは、IEとNNでまったく同じでしたか?



LookupDispatchActionのexecuteメソッドにブレークポイントしかけて確認してみましたが、
残念ながらIEではパラメータは取得できませんでした。
altに値を指定して試したりもしましたがIEは投げてくれないようです。
HTML4.01 Referenceにはクリック地点に関する情報が送られる。としか書いていないようなので
これはこれで正しいということなんでしょうが、画像ボタン満載のページに無骨なデフォルトボタンというのを
考えるとなかなか諦めがつきません。どうにかして押されたボタンを判別するIEとNN共通の手段はないものでしょうか?
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2004-01-28 09:58
引用:

ぼらさんの書き込み (2004-01-27 23:15) より:
引用:

サーバへのリクエストパラメータは、IEとNNでまったく同じでしたか?



LookupDispatchActionのexecuteメソッドにブレークポイントしかけて確認してみましたが、
残念ながらIEではパラメータは取得できませんでした。
altに値を指定して試したりもしましたがIEは投げてくれないようです。



これ私の質問の答えになっていませんよ。正しい答え方は
「NNの場合、A,B,C が送信されるのですが、IE では、A,B でした」
でしょう?

引用:

HTML4.01 Referenceにはクリック地点に関する情報が送られる。としか書いていないようなので



それってクリッカブルマップのことじゃないの?

引用:

これはこれで正しいということなんでしょうが、画像ボタン満載のページに無骨なデフォルトボタンというのを
考えるとなかなか諦めがつきません。どうにかして押されたボタンを判別するIEとNN共通の手段はないものでしょうか?



意味がよくわかりません。画像ボタンでうまくできるのであれば、全部が画像ボタン
になり、うまくいかないのであれば、全部「無骨なデフォルトボタン」になるんじゃ
ないですか?

CSS のボタン装飾(?)はしらべました?
ぼら
会議室デビュー日: 2003/09/11
投稿数: 6
投稿日時: 2004-01-29 01:09
申し訳ございません。
自分の脳内補完で勝手に解釈し、答えた気になって見当違いのこと書いてました。(汗

>>NNの場合、A,B,C が送信されるのですが、IE では、A,B でした
そのとおりです。下のようなフォームで確認したのですがIEではCの値だけが送信されませんでした。
<form action="test.do" method="post">
<input type="text" name="A">
<input type="text" name="B">
<input type="image" name="C" value="値1" src="1.gif">
<input type="image" name="C" value="値2" src="2.gif">
</form>

>>CSS のボタン装飾(?)はしらべました?
色や文字装飾を変えるのはあったのですが、画像を指定するのは見つけることが出来ませんでした。使いたいのは画像なので装飾ではないですね。

>>それってクリッカブルマップのことじゃないの?
W3Cのinput要素のimageタイプの説明に「the form is submitted and the click coordinates passed to the server.」という一文があるので「画像ボタンでもクリック
した座標が送られるんだな〜」と捉えています。
「これはこれで正しい…」云々というのはvalueの設定値が送られるとは書いていな
かった上での発言で、言葉足らずだったようで申し訳ございません。


解決策として、一つのフォームに一つの画像ボタンを置き、画像の左半分を押されたら
アクションAを実行、右半分ならアクションBを実行、というのも考えたのですが
それだとボタンを増やしたり自由に配置するのが難しくなるので、1つのフォームに
複数の画像ボタンを置き、押されたボタンを判別したいのですが?
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2004-01-29 01:20
画像のボタンとは別にヒドゥンパラメタを用意しておいて、
画像ボタンクリックでJavaScriptを使ってそのヒドゥンパラメタに
値をセットするとかは駄目ですか?
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2004-01-29 10:03
引用:

ぼらさんの書き込み (2004-01-29 01:09) より:
>>NNの場合、A,B,C が送信されるのですが、IE では、A,B でした
そのとおりです。下のようなフォームで確認したのですがIEではCの値だけが送信されませんでした。
<form action="test.do" method="post">
<input type="text" name="A">
<input type="text" name="B">
<input type="image" name="C" value="値1" src="1.gif">
<input type="image" name="C" value="値2" src="2.gif">
</form>



なんだか釈然としません。
このとき、C の画像をクリックすると、画像内の位置 (C.x と C.y)が送信される
はずですが。IEでは 何も送信されず、NN の場合は 「C=値1」が送信されるんですか?
本当ですか?

引用:

解決策として、一つのフォームに一つの画像ボタンを置き、画像の左半分を押されたら
アクションAを実行、右半分ならアクションBを実行、というのも考えたのですが
それだとボタンを増やしたり自由に配置するのが難しくなるので、1つのフォームに
複数の画像ボタンを置き、押されたボタンを判別したいのですが?



基本的に type="submit" や type="image" の場合は、リクエストパラメータ中から
押されたボタンや画像の「name」が存在するかを調べることでどれが押されたかを
判定します。それがいやなら、YOU@IT さんの言うように JavaScript での制御ですね。
さやべえ
常連さん
会議室デビュー日: 2003/03/13
投稿数: 33
投稿日時: 2004-01-29 11:19
さやべえです。

今回の現象はLookupDispatchActionの場合の時のみ起きる現象なのでしょうか?
私の方では通常のActionを継承したクラスで同様のことをやりましたが、どのブラウザでもきちんとクリックされた座標が送られてきています。

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