• 締切済み

WEBでServletに値を渡してウィンドウを閉じたいのですが…

ある子ウィンドウで選択した値をServretに渡してセッションに格納して子ウィンドウを閉じたいのですが、 Servletで処理している最中にウィンドウが閉じてしまい、値を格納できません。 (IOExceptionが出てしまい、セッションに格納できません。) Servletに渡し終えたかの判断ができればいいのですが…何かよい方法はありませんか? 下記にJava Scriptを書いておきます。 function action_submit(){ with(document.form**){ action= "<Servlet>?URLNAME="+URLNAME.value;   method= "POST";   submit(); } window.close(); } Javaでの制御なのかJava Scriptの制御なのかどちらがいいのでしょうか? ご回答よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

その処理をする Servlet で、処理が終わったら、空のページに forward するように しておいて、飛び先の空のページでは、body の onLoad で、自分を close する というのはどうでしょう?

関連するQ&A

  • SubWindowを閉じる時に処理する方法

    ある子ウィンドウで選択した値をServretに渡して子ウィンドウを閉じたいのですが、Servletで処理している最中にウィンドウが閉じてしまい、値を格納できません。 Servletに渡し終えたかの判断ができればいいのですが…何かよい方法はありませんか? 下記にJava Scriptを書いておきます。 function action_submit(){ with(document.form**){ action= "<Servlet>?URLNAME="+URLNAME.value;   method= "POST";   submit(); } window.close(); } よろしくお願いします。

  • リンクの値→サーブレット

    いつもお世話になっております。 今回もよろしくお願いいたします。 (1)jsp画面のリンクの値をServletへおくる (2)ServletでDBアクセスし、処理を行う (3)(2)で処理した値をBeanに格納する (4)jsp画面でBeanの値を取得する といった流れをしています。 [(1)のjspでのコード(一部)] <form name= henkou method="post" action="../servlet/RequestServSession"> <a href= "../henkou.jsp"> <input type=hidden name=MySubmit> <jsp:getProperty name="reqObject" property="id" /> </a> </form> <script language="JavaScript"> function func(MyCommand){ document.henkou.MySubmit.value=MyCommand; document.henkou.submit(); } </script> [(2)Servletのコード(一部)] String strId = (String)request.getParameter("MySubmit"); String strSesId = new String(strId.getBytes("iso-8859-1"),("Shift_JIS")); int intId = (Integer.parseInt(strId));           ・           ・           ・ //処理された値をBeanに格納 HttpSession session = request.getSession(); *1→session.setAttribute("id",sid); *2→session.setAttribute("name",name); *3→session.setAttribute("biko",biko);           ・           ・           ・ などを実行すると、(4)では   *1→ 0   *2→ null   *3→ null が表示されます。 リンクの値がServletへきちんと送れていないのだと思い、jsp→Servletのみで実行したところ、 "Http-500エラー NullPointerException" が発生します。 どのようにしたらうまく値をおくることができるのでしょうか? どなたかご教授のほどよろしくお願いいたします。 

    • ベストアンサー
    • Java
  • JSPから値を送ったときのServletでの受け取り方について

    JSPから<form>で値を送って、それをServletでgetParameterで受け取る処理を しているのですが、 JSPから送る値がいくつあるかわからない場合、Servlet側ではどのように 受け取る方法があるでしょうか? 例えば、 <form action="<%= response.encodeURL("/mimi/abc") %>" method="post"> <% for(int i=0;i<attr.size();i++) { //attr.size()にはいくつ入ってるか不明として String strNameAtr = (String)attr.elementAt(i) ; %> 値 <input type="text" value="<%= strNameAtr %>" name="xmlValueAttr_"+"<%= i %>"><br> <% } %> <input type="submit" value="変更" name="getText"> </form> これを、Servletで受け取る場合、どのように受け取れるでしょうか? xmlValueAttr_iの"i"の部分はいくつまで入っているかわからないので、 普通の処理だと、対応できません。 いい方法があったら、教えてください、お願いします。

    • ベストアンサー
    • Java
  • ウィンドウが閉じない

    フレーム付きの親ウィンドウから一つ子ウィンドウを生成し、その子ウィンドウ内のSubmitボタンのクリックするとメールを送信しその後、子ウィンドウ自身を閉じる動作をさせたいのですが、うまくいきません。 お助け下さい。 --------- 親ウィンドウ --------- window.open('kakunin.htm','CheckFrame'); ------------------------ --------- 子ウィンドウ --------- ~略~ function mailsub(){ window.close(); } --> </script> </head> <body> <div align="center"> <br><br> <META HTTP-EQUIV='Content-Type' CONTENT='text/html;CHARSET=Shift_JIS'> <form action="mailto:xxx@xxx.co.jp" method="post" enctype="text/plain" name="check">  <input type="submit" name="Submit" value="送信" onClick="mailsub()"> ~略~ ------------------------- これで子ウィンドウは閉じません。 オブジェクトを指定すればいいのかもしれませんが、親ウィンドウからの生成だとどうすればよいのかもわかりません。 よろしくお願い致します。

  • ウィンドウを閉じるボタン

    おそらく初歩的な質問ですがよろしくおねがいします。javaスクリプトはフリーのものをコピペで使うだけで、まったくの素人です。。。 よくありがちな、子ウィンドウを閉じるのに使用する”ウィンドウを閉じる”というjavaスクリプトですが ↓ <SCRIPT language="JavaScript"> <!-- function CloseWin(){ window.close(); } // --> </SCRIPT> これをそのままhtml内に挿入し、いざ使用してみると、わざわざダイアログが開いて”ウィンドウは表示中のwebページにより閉じられようとしています。このウィンドウを閉じますか?”と確認してきます(win/IE5.5) 普通こういうスクリプトを使用して子ウィンドウを開くサイトをみてもこのようにダイアログは開くことありませんよね。 ダイアログを開かせずに即ウィンドウを閉じたいのですが、どうすればよいのでしょうか?もしかして親ウィンドウ側にも何か記述が必要なのでしょうか?

  • 子ウィンドウから親ウィンドウへの値代入

    こんにちは。 asp.net2.0を使い始めて間もないのですが、子ウィンドウから親ウィンドウへの値代入で困ってます。 親ウィンドウからボタンで子ウィンドウを表示し、子ウィンドウのGridViewで選択した値を親ウィンドウの テキストボックス(サーバーコントロール)に代入したいのですが、 ['window.opener.form1.TextBox1' は Null またはオブジェクトではありません。] というエラーが出てしまいます。 ネットで見つけたサンプルは、親、子ともにウェブフォームを使用しており、確かにうまくいくのですが、 私が作っているページはマスターページの中のコンテンツフォームを親としていて、うまくいきません。 ※但し、親側のコントロールをHTMLクライアントコントロールのINPUTタグにし、 さらにフォーム名をaspnetForm(ブラウザのソース表示でみたらそうなってました。自動生成?) にして ↓子ウィンドウのグリッド選択時ソース protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { string strScript; strScript = "<script language='javascript'>"; strScript += "window.opener.form1.TextBox1.value='aaaa';"; strScript += "window.close();"; strScript += "</script>"; Response.Write(strScript); } リテラルコントロールにしたり、TextBox1.valueではなくTextBox1.textにしてみたりと いろんなパターンを試しましたが、だめでした。 コンテンツフォームでは親のサーバーコントロールへの値代入は不可能なのでしょうか? そもそも、子ウィンドウでの検索というのはASP.NETでは、あまり一般的ではないのでしょうか? 宜しくお願いいたします。 (情報、不足してましたら教えてください。)

  • 子ウィンドウに値を渡したい

    親ウィンドウ <form action="aaa.xxx" method="post" name="aaa"> 条件:<input type="text" name="joken"> <button onclick="子ウィンドウ開く"> </form> 親ウィンドウのbuttonをクリックすると、jokenをキーにウラでDBからデータを引っ張ってきます。それを、onclickで開いた子windowに表示する。 ということをやりたいのですが、1回ボタンを押すだけで、 ・ウラ(PHPです)にsubmitして、データを引っ張る ・子ウィンドウを開く ・子ウィンドウに引っ張ったデータを表示する という3つのことができるのでしょうか。 できるならば、恐れ入りますが、具体的に方法を示していただくか、 あるいは参考URLを教えていただけるととても助かります。 よろしくお願いします。

  • 特定のウィンドウ名を持つウィンドウの有無を判別

    お世話になります。 現在、以下のスクリプトでPageA.htmlのボタンをクリックすると 新ウィンドウを開きPageB.jspを表示し、PageA.htmlは閉じます。 /* PageA.html */ function submitPageB(){ // "WindowB"が既に存在する場合は閉じる var dummy = window.open("","WindowB",""); dummy.close(); // 待ち受けページを開く var win = window.open("NowLoading.html","WindowB","width=800,height=600,scrollbars=no,resizable=no"); // WindowBにpost形式でパラメータ送信 with(window.document.formA){ action="PageB.jsp"; method="post"; target="WindowB"; submit(); } //PageA.htmlを閉じる window.close(); } これを"WindowB"が存在するか判別して "WindowB"がなければそのまま開く、 "WindowB"があればconfirmで新たに開くか開かないかを 選択させるようにしたいのですが、 "WindowB"というウィンドウ名のウィンドウを 取得する方法がわからないため実現できません。 var blWin = true;//※ここで"WindowB"が存在するかどうかを取得したい if(!blWin || confirm("既に開いています。新たに開きますか?")){ submitPageB(); } 特定のウィンドウ名のウィンドウの有無を知る方法、 あるいは上記のことを実現させるよい案はないでしょうか? よろしくお願いします。

  • HTTPステータス 404 - /servlet/Testが表示される

    はじめまして。Javaの初心者です。 どうしてもわからないことがあります。それは、 最初にTest.jspを実行して送信ボタンを押すと、 サーブレットからforwardされてきた「あああああ」 が表示されるのですが、再び送信ボタンを押すと、 「HTTPステータス 404 - /servlet/Test」が表示 されます。なぜなのでしょうか?また、どのようにす れば、404エラーを出すことがなく実行できるのが どうか教えてください。お願いします。 ************************************************* <%-- Test.jsp --%> <%@ page contentType="text/html; charset=Shift_JIS" %> <html> <head> <title>Test</title> </head> <body> <form method="POST" action="/servlet/Test"> <input type="submit" name="submit" value="送信"/><br/> </form> <% if(request.getParameter("submit") != null) { %> <hr/> <%= (String)request.getAttribute("b") %> <% } %> </body> </html> ************************************************* import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*; public final class Test extends HttpServlet { public void doPost ( HttpServletRequest request, HttpServletResponse response ) throws IOException,ServletException { request.setAttribute("b","あああああ"); ServletContext sc = this.getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/Test.jsp"); rd.forward(request,response); } } *************************************************

    • ベストアンサー
    • Java
  • 親ウィンドウに制御を戻しcgiを実行させるには?

    (1) CGI結果をブラウザに表示させ(これを親ウィンドウとします)、 (2) 親ウィンドウのボタン押下で子ウィンドウをjavascriptで開き、 (3) その子ウィンドウのボタン押下で、親ウィンドウで違うCGIを実行させ、自身のウィンドウ(子ウィンドウ)は閉じる。 ということをしたいのですが、(3)の親ウィンドウへ制御を戻してCGIを実行させることが出来ません。この部分を教えて頂きたいです。自身のウィンドウは閉じられます。 子ウィンドウHTMLの抜粋 <html lang=ja> <head> <title>スケジュール設定結果</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <script language="JavaScript1.3" type="text/javascript" src="./script/xxx.js"></script> </head> <body> <form name="aaaa" method="post"> <center><input type="button" value="OK" onClick="javascript:xxxxx();"></center> </form> </body> </html> JavaScriptの抜粋 function xxxxx() { self.document.aaaa.target = ; ← この部分に設定するものは? self.document.aaaa.action = "./foo.cgi"; self.document.aaaa.submit(); window.self.close(); return; } ちなみに、「target」の部分に、window.openerとしても、親ウィンドウは何も変化なく、別ウィンドウが開いてしまいました。 親ウィンドウには特にwindow名称をつけていません。ブラウザ起動時の状態です。

専門家に質問してみよう