サブウィンドウへのHidden項目の値渡しにおける問題とは

このQ&Aのポイント
  • StrutsとJSPで構成された親画面で検索結果一覧を表示し、サブウィンドウ用のボタンからサブウィンドウにパラメータを渡す処理において、特定の行のパラメータが正しく表示されない問題が発生しています。
  • サブウィンドウにパラメータを渡す際に、JavaScriptを使用し選択行のパラメータを取得していますが、最初に選択した行のパラメータ以外は正しく表示されません。
  • 原因となっている要素が特定できず、解決策を見つけることができていません。納期が迫っているため、迅速な解決を求めています。ご教示いただけると幸いです。
回答を見る
  • ベストアンサー

サブウィンドウへ渡すHidden項目の値

いつもお世話になっております。 このたび、業務上でらちがあかず、ほとほと困り果てております。 どうか、助けてください>< 以下に詳細を明記しております。 <処理の流れ> StrutsとJSPで構成された親画面で検索を行い、 その検索結果の一覧の行ごとにサブウィンドウ用のボタンが表示されます。 ※一覧の明細フィールドはIteratorで複数行出力されます このボタンを押下することで、 StrutsとJSPで構成されたサブウィンドウにパラメータを渡して サブウィンドウに表示させるという処理になります。 <問題点> サブウィンドウにパラメータを渡す際に、 親画面から選択行のパラメータをJavaScriptで取得します。 この際、複数行から取得するので選択行をインデックスで取得します。 例えばこのようになります。 1.インデックス=idx 2.'sample'は検索処理で値が詰められたHidden項目です。 var sample = document.getElementsByName('sample'); document.getElementById('sample').value = sample[idx].value; としています。 3行のレコードが一覧に表示されているとします。 2行目と3行目はそれぞれ押下した場合、正常にサブウィンドウに表示されます。 しかし、1行目は、最初に押下した場合、正常に表示されますが、 2行目や3行目のあとに押下すると、内容がなぜか直前の押下した 内容にHiddenの内容が置き換えられています。 2行目と3行目はそのようなことがありません。 ※検索直後は1行目の値も正常に設定されていました ByIdのvalueは配列指定できないようなので、 0番目は0番目、1番目は1番目という指定での 解決はできず、困っています。 何が原因となっているのかいまいちわかりません。 納期まで時間がありません。 どなたかピンと来られる方がおられましたら、 ぜひとも教えてください。 何卒宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんばんわ! もしかして徹夜ですか? 大変です…。 テストまで無事に終わりそうですか? ソースは業務上表示できないでしょうし、 私も見てないので何とも言えませんが、 > その検索結果の一覧の行ごとにサブウィンドウ用のボタンが表示されます。 ということであれば、ボタンをsubmitからbuttonに変えて ボタンに値を持たせたらいけないんでしょうか? 今一つhiddenにする理由が分かりません。 例えば function onClickEvent(obj) { location.href = "hogehoge?parameter=" + obj; } とJavaScriptを書いておいて、JSPでは <% for(Iterator<HogeBean> i = list.iterator(); i.hasNext();) { %> <%= i.next().text() // 何かテキスト表示(これはないかな?) %> <input type="button" onclick="onClickEvent(<%= i.next().value() %>)"> <% } %> とすれば目的の動作ができそうな気がします。 見当違いでしたらすいません。 hiddenでないとダメということであれば、まずはidxの値が正常か alertで出してみてもいいかもですね。 該当のJavaScriptにたくさんデバッグポイントを置いて 1つずつ値を確認してはいかがでしょうか?

axelchk
質問者

お礼

クローズが遅くなりました。 こちら自己解決できました。 その後もいろいろ出ましたが何とか乗り越えました。 アドバイスいただきまして本当にありがとうございました。

関連するQ&A

  • hiddenによるセッション管理について。

    hiddenによるセッション管理について。 セッション管理にクッキー利用、URLライティング、hiddenによる3つの方法があると聞きました。 今まではクッキー利用によるセッション管理だったのですが、使えない場合も出てくることを考えて他の方法を試してみようと思いました。 質問1. URLライティングはリンクによる実行時のみ有効という認識でよいのでしょうか。submitによる実行はクッキーまたはhiddenによる方法しか使えないと考えてよいのでしょうか。 質問2. 下記のようにセッションIDをhiddenでサーバに送信しようとしたのですが、サーバ側でも何か処理が必要なのでしょうか。 <input type="hidden" name="jsessionid" value="<%=session.getId()%>" /> 想定ではクッキーの場合と同じくサーバ側でよろしくやってくれるのかと思ったのですが、実際に実行してみるとうまくセッションが引き継がれません。 そこでサイトを探していたところ下記のような記述を見つけました。 「HttpSessionとは異なり、HIDDENパラメータの埋め込みやパラメータの解析などの処理を、開発者が実装する必要があります。」 「HIDDENパラメータの埋め込み」というのは上記の記述になると思うのですが、パラメータの解析というのをサーバ側のプログラム(strutsを利用していますので、アクションやサーブレット?)で何か処理が必要なのでしょうか。 いまはクッキー利用と同じく下記のようにしてしまっていますが、たぶんこの記述を何かに変えないといけないのかなと思っています。 HttpSession session = req.getSession(); hiddenによる実際のサンプルコードをいま探しているところなのですが、いまのところ見つかっていません。 もしよろしければアドバイスをいただけると助かります。

    • ベストアンサー
    • Java
  • サブウィンドウへのデータの受け渡し方

    はじめまして。 一覧画面から、ボタン押下でサブウィンドウを開き、詳細登録画面を表示するというような、 複数サブウィンドウで構成される webアプリケーションをつくりたいのですが、 実現可能かわからなく、困っています。 (1)サブウィンドウへのデータの受け渡し sessionにユーザ情報やその他のデータを格納して、 サブウィンドウに情報を渡そうと思っていますが、 sessionに格納した情報はサブウィンドウにも引継ぎができますか? sessionのスコープで調べていたのですが、 よくわかりませんでした。 (2)一つのブラウザ上で画面遷移せず、ほとんどサブウィンドウを開いて画面遷移する構成にしています。 こういう構成のwebアプリケーションを今まで見たことがなく、何か問題や弊害があるのではないか? webアプリケーションの構成として間違っていないか?不安です。 ちょっとしたことでもご指摘いただければありがたいです。 よろしくお願いします。

  • サブウィンドウを指定の位置に開く

    こんにちは。検索しても同じような質問内容がなかったので質問させてくださいm(_ _*)m 親ウィンドウからサブウィンドウを開く時の位置指定なんですが、 親ウィンドウと少し重なるような感じで左下に開かせたいと思います。 まず、こういった動作は可能なんでしょうか? 親ウィンドウの情報をサブウィンドウが取得してから開けばいいのかなと思ったんですが、 その親ウィンドウの情報の取得方法がよく分からなくて。(親ウィンドウのtopから30px、leftから30pxという方法でいいんでしょうか?) もしサンプルなど載っているサイトがありましたら 教えてください。 なんだか要領得なくて申し訳ないんですが、宜しくお願いします。

  • hiddenの値が期待した値で取得されないのです

    いつもお世話になっております。 for文の中で、押されたボタンのデータをhiddenで送信しようとしているのですが、 うまくいきません。 ソースは下記になります。 aaa.jsp <% for(int i = 0;i < list.size(); i++) { caModel = (CategoryModel)list.get(i); int i1 = caModel.getCategory(); int i2 = caModel.getCategory_sub(); String s1 = caModel.getCategory_name(); %> <html:submit property="submit"><%=s1%></html:submit> <%=i1%>,<%=i2%> <input type="hidden" name="category" value="<%=i1%>"> <input type="hidden" name="category_sub" value="<%=i2%>"> <% } %> 途中でi1とi2を表示しているのですが、期待している通りに表示されます。[1,1]と[1,2]が表示。 これをservletで取得すると、 bbb.java String st1 = request.getParameter("category"); String st2 = request.getParameter("category_sub"); System.out.println("st1 = " + st1); System.out.println("st2 = " + st2); 2つ目のボタンを押して[1,2]を送信したいのですが[1,1]が表示されてしまいます。 分かる方がいましたら、ご教授下さい。よろしくお願い致します。

    • ベストアンサー
    • Java
  • Strutsのvalidate()でListの値がなくなる

    Strutsを使用して開発をしています。 一覧表示されたデータを選択し、その選択されたデータを更新するという システムを作っています。 [詳細] 一覧にはラジオボタンと名前と年齢が表示されています。 ラジオボタンで選択されたデータの年齢を見て 50才以上なら更新せず、validate()でエラーにしたいのです。 JSPではList(ラジオボタンと名前と年齢が入っている)を <logic:iterate >タグでぐるぐる回しています。 更新ボタン押下時、validate()メソッド内で listを取得して判断しようとしたのですがnullになってしまいます。 このListの値を取得する方法はありませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JSP内での配列の値取得方法。

    こんにちは。 -------- (略) <SCRIPT LANGUAGE="JavaScript" > function NextPage(no){ with( document.frm1 ) { hidNO.value = no; hidPlanId.value = 「ここに配列から取得した値を表示したい」; action = "Next.jsp"; submit(); } (略) <FORM name="frm1"> <% for(int i=0; i<(DBより取得した配列).length; i++) { ROW(HashMap継承の配列クラス) row = rows[i]; %> <INPUT TYPE="hidden" ID="hidKey" NAME="hidKey" VALUE="<%= i番目の値(1)%>" > <INPUT TYPE="hidden" ID="hidKey" NAME="hidKey" VALUE="<%= i番目の値(2)%>" > <TD><INPUT TYPE="button" NAME="btnDet<%= i %>" VALUE="詳細表示" onClick="NextPage('<%= i %>');" > </TD> <% } %> </FORM> ******* 上記のhidkeyのvalue値をJavaScript内でi番目の値を 取得するにはどのように記載したらよいのでしょうか・・・。 他のクラス等を使っているため、うまくコードが表現 できていないかもしれませんが、 もしこれでわかった方、ぜひ教えてください。

    • ベストアンサー
    • Java
  • Strutsで画面に表示した値の再取得って可能?

    お世話になっています。 mike219と申します。 現在strutsを使用してWebシステムを開発しております。 開発している最中にちょっと気になることがあったので質問させていただきました。 気になったのは以下のような感じの機能を作成する際の動作です。 (1)DBから取得したデータを一覧で表示します。 (2)一覧に表示したデータのフィルタを行い再表示を行う、といったものです。 ※フィルタの対象はDBからではなく、画面に表示した値です。 というような機能です。 (1)に関してはまったく無問題なのですが、 (2)の「一覧に表示したデータのフィルタを行い」はどういった感じで作成すれば いいのか分かりません・・・ (javascriptでなにかJsonとかデータを加工してしないといけないのかな?) いい方法をご存知であれば教えていただけると助かります。 ちなみに環境は↓です。 Java:1.6 Struts:1.3 Strutsに関しては経験が浅いです >< よろしくお願い致します。

    • ベストアンサー
    • Java
  • Strutsで画面開設時に・・・

    Strutsで画面を開設時に ボタン等を押下することなく 結果一覧を表示させる方法はありますでしょうか?? 前の画面から遷移するためのボタンを押下した時ではなく、 画面が開いた時に、結果一覧を表示させる操作がしたいのです。 struts-config.xmlをどうにかいじって Action.classのexecute()を ボタン等の操作なくJSPファイルに読み込む方法ないですかね・・・・。

    • ベストアンサー
    • Java
  • Windowsから既存WebのFORMのSubmitにパラメータをわたす。

    1.Windowsから既存Webのcgiにパラメータを渡して、表示されるデータをローカルのDBに保存したい。 以下が、WebのFORMのSubmit部分で、submit後に表示されるWebデータを取得したいのです。<form action="http://www.XXX.jp/cgi.exe" method=POST> <input type=HIDDEN name="CNAME" value="/list"> <input type=SUBMIT value="一覧"> </form> どの様にすれば、実現できますでしょうか? よろしくお願いします。

  • 『`』がテキストタイプのvalueにある場合にhiddenを追加すると表示が崩れる

    言葉では説明できないためコードを記載致しました。 下記のコードでボタンを押下した場合に表示が崩れるのは何故でしょうか?(IE6,IE7で確認) 又、対策としてはどのような事が考えられるでしょうか?(『`』を入力禁止以外でお願い致します。) 尚、innerHTMLをalertで出すとうまく追加されていないようです。。。 よろしくお願い致します。 <html> <head> <script> function createhidden( name, value, formname ){ str = '<input type="hidden" name="aaa" value="bbb"/>'; document.forms[0].innerHTML += str; } </script> </head> <body> <form action="" name="form1"> <input type="text" name="b"value="`"/><br><br> <input type="button" value="CREATE HIDDEN" onclick="createhidden()"/> <input type="text" name="a"value="`"/><br><br> </form> </body> </html>

専門家に質問してみよう