- - PR -
画像ボタンでのDispatchアクションの方法は?
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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系アクションを実現するいい方法があれば教えて いただけませんか? 宜しくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2004-01-27 16:50
#救済活動
サーバへのリクエストパラメータは、IEとNNでまったく同じでしたか? | ||||||||||||||||
|
投稿日時: 2004-01-27 23:15
LookupDispatchActionのexecuteメソッドにブレークポイントしかけて確認してみましたが、 残念ながらIEではパラメータは取得できませんでした。 altに値を指定して試したりもしましたがIEは投げてくれないようです。 HTML4.01 Referenceにはクリック地点に関する情報が送られる。としか書いていないようなので これはこれで正しいということなんでしょうが、画像ボタン満載のページに無骨なデフォルトボタンというのを 考えるとなかなか諦めがつきません。どうにかして押されたボタンを判別するIEとNN共通の手段はないものでしょうか? | ||||||||||||||||
|
投稿日時: 2004-01-28 09:58
これ私の質問の答えになっていませんよ。正しい答え方は 「NNの場合、A,B,C が送信されるのですが、IE では、A,B でした」 でしょう?
それってクリッカブルマップのことじゃないの?
意味がよくわかりません。画像ボタンでうまくできるのであれば、全部が画像ボタン になり、うまくいかないのであれば、全部「無骨なデフォルトボタン」になるんじゃ ないですか? CSS のボタン装飾(?)はしらべました? | ||||||||||||||||
|
投稿日時: 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つのフォームに 複数の画像ボタンを置き、押されたボタンを判別したいのですが? | ||||||||||||||||
|
投稿日時: 2004-01-29 01:20
画像のボタンとは別にヒドゥンパラメタを用意しておいて、
画像ボタンクリックでJavaScriptを使ってそのヒドゥンパラメタに 値をセットするとかは駄目ですか? | ||||||||||||||||
|
投稿日時: 2004-01-29 10:03
なんだか釈然としません。 このとき、C の画像をクリックすると、画像内の位置 (C.x と C.y)が送信される はずですが。IEでは 何も送信されず、NN の場合は 「C=値1」が送信されるんですか? 本当ですか?
基本的に type="submit" や type="image" の場合は、リクエストパラメータ中から 押されたボタンや画像の「name」が存在するかを調べることでどれが押されたかを 判定します。それがいやなら、YOU@IT さんの言うように JavaScript での制御ですね。 | ||||||||||||||||
|
投稿日時: 2004-01-29 11:19
さやべえです。
今回の現象はLookupDispatchActionの場合の時のみ起きる現象なのでしょうか? 私の方では通常のActionを継承したクラスで同様のことをやりましたが、どのブラウザでもきちんとクリックされた座標が送られてきています。 | ||||||||||||||||
