• ベストアンサー

Javaプログラムからポップアップを表示する方法

現在、Javaプログラムにおいて以下のような ことを実施したいと考えています。 1。画面上(JSP)からSQLで使用する条件を選び、ボタンをクリック 1.JavaからDBにアクセスし、検索結果件数を取得 2.件数をポップアップで表示し、「はい」もしくは「いいえ」を選択することで、処理を続行させるかさせないかを決定 1及び2については問題なく行えるのですが、3のやり方がよくわかりません。 DBの検索結果が仮に3件だとすると、ポップアップで 「3件が選択されました。処理を続行しますか」というメッセージとともに 「はい」、「いいえ」ボタンを表示させます。 ここで表示するポップアップは、できればJavaScriptで行いたいのですが可能なのでしょうか。 もしJavaScriptでなくても、とにかくポップアップが表示できるようにしたいと考えています。 大変恐縮ですが、よろしくお願いします。

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

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

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.2

補足の方も読ませて頂きました。 > ここで私の不明点として、1つめが(2)から(3)への遷移になります。 > つまり、Javaプログラム本体からJavaScriptを呼び出すこと。 厳密に言うと、JavaからJavascriptを「呼び出す」ことはできません。 JavaおよびJSPは、ブラウザからのHTTPリクエストに対して 応答としてHTML(含Javascript)を「返す」ことしかできません。 そのHTMLを表示してJavscriptを実行するのは、ブラウザの役目です。 syu1219_aさんがおっしゃる「JavaがJavascriptを呼ぶ」というのは おそらく、Javaが応答を返して自動的にconfirmのダイアログが出て 「はい」か「いいえ」の確認をユーザに促す、ということなのかと 想像します。 それであれば、Javascriptの「onLoad」イベントが使えます。 onLoadイベントは、ブラウザが読み込み終わると発生しますが、 それを<body>タグにつければ、ページ読み込み完了時に イベントが発生し、希望のfunctionを呼び出すことができます。 以下のようにすれば、ページ表示と同時に確認を行えます。 ---------- <html> : <body onLoad="kakunin()"> : </body> </html> <script language="Javascript"> <!-- : function kakunin() {   var msg = "検索結果は";   msg += "<bean:write property="kensakuKekka"/>";   msg += "です。\n処理を実行しますか?";   if(confirm(msg) == true) {     :   }   else {     :   }   : } : //--> </script> ---------- > そして、2つめが(3)から(4)への遷移になります。 > つまり、JavaScriptで選択された結果をJavaプログラムに返すこと。 ブラウザ側からJavaの方へ情報を伝えるには、 入力された値にしろ、押したボタンにしろ、何にしても <form>に情報を持たせてsubmitで送信するしかありません。 情報を何らかの形でsubmitに載せることになります。 「確認でどちらを選択したか」というプロパティを新たに設ければ Java側で受け取ることができます。 <input type="hidden">を使い、submitに載せるといいでしょう。 ---------- <html> : <form method="post" action="hogehoge"> : <input type="hidden" name="sentaku"> : </form> : </html> <script language="Javascript"> <!-- : function kakunin() {   var f = document.forms[0];   var msg = "検索結果は";   msg += "<bean:write property="kensakuKekka"/>";   msg += "です。\n処理を実行しますか?";   f.elements["sentaku"].value = confirm(msg);   f.submit(); } : //--> </script> ---------- あとは、form.actionを書き換えることによって ちがうActionを呼ぶということもできるでしょう。

syu1219_a
質問者

お礼

osumitanさん、ご回答ありがとうございます。 教わったやり方で実現させたいと思います。 本当にありがとうございました。

その他の回答 (2)

回答No.3

>i = (SQLを元にDBに検索を行い、結果件数をintで返す関数);  ・・・(d) struts 使ってるのならこの i の値をActionFormBeanに入れてJSPにひき渡します。 >java側でiをJavaScriptへ受け渡し、ユーザが選択を行う。   ・・・(e) #2の方も言われているようにJavaからJavascriptを直接呼び出すことはできません。Javaモジュールはサーバ側で動作しているのに対して、javascriptはクライアント側で動作しているからです。 なので(d)で処理結果をアクションフォームビーンに入れて 処理をJSPに戻します。(ActionFowardを返す。) 要するにここで画面の再描画が入ります。 再描画すると同時に「件数」を表示します。 ボクも#2さんのように <body onLoad="">使うと思います。 ポップアップウインドウが表示され、「はい」が選択されたら そこでsubmit() してやればいいです。

syu1219_a
質問者

お礼

osumitanさん、補足のご意見ありがとうございます。 参考にさせて頂きます。 ありがとうございました。

回答No.1

function nantoka() {  if(window.confirm("<%= selcount %>件が選択されました。続行しますか?")) {   // ここで続行する処理JSPもしくはサーブレットを呼び出す  } } って感じではいかがでしょうか?

syu1219_a
質問者

補足

ご回答ありがとうございます。 確かに、そのJavaScriptを利用することで実現できそうですが、 私の考えている方法は以下の通りなのです。 ちなみに、フレームワークとしてStrutsを利用しています。 JSP(SQLの条件を選択後、ボタン押下)→(1) Javaプログラム(DBへのアクセス、結果の取得)→(2) JavaScript(ポップアップの表示)→(3) javaプログラム(続行するしないによる画面遷移の決定)→(4) ここで私の不明点として、1つめが(2)から(3)への遷移になります。 つまり、Javaプログラム本体からJavaScriptを呼び出すこと。 イメージとしては以下になります。 StringBuffer sql; // 条件を元に作成されたSQLを格納 ・・・(a) int i; //検索結果件数を格納            ・・・(b) sql.append("条件"); // 繰り返し行い、条件を追加していく・・・(c) i = (SQLを元にDBに検索を行い、結果件数をintで返す関数);  ・・・(d) java側でiをJavaScriptへ受け渡し、ユーザが選択を行う。   ・・・(e) そして、2つめが(3)から(4)への遷移になります。 つまり、JavaScriptで選択された結果をJavaプログラムに返すこと。 イメージとしては以下になります。 javaプログラムで(e)の返り値を取得 ・・・(f) 画面遷移を決定          ・・・(g) 以上になります。 (e)と(f)のやり方が良く分かりませんので、よろしくお願い致します。

関連するQ&A

  • JSPでポップアップ画面を表示する方法

    JSPでポップアップ画面を表示する方法 JSP側でボタンを表示してボタン押下時に「action="./mng」により java側のdoPost()を呼び出しています。 <FORM id="form" name="form" method="post" action="./mng"> JSP側のボタン押下時にポップアップ画面を表示してから JAVA側のdopost()を呼び出ようにする簡単な変更テクニックがあれば 教えて下さい。よろしくお願いします。

    • ベストアンサー
    • Java
  • 検索後のページ再表示初期化

    すみませんが、どなたか教えて下さい。 ・index.jsp(トップページ) ・A.jsp(検索ページ) ・Action.java ・Form.java ある検索条件を設定し、検索ボタンをクリックしてから検索結果を表示させます。(A.jsp)その後トップページ(index.jsp)に戻り、再度、検索ページを表示させると前回の検索結果が表示されてしまいます。 A.jspの検索ページの初期表示はAction.javaでtype=0と判断し、処理を行い、「検索」ボタンクリック時にJavaScriptでtypeに1をセットしAction.javaでtype=1の検索処理を行います。が、A.jspを再表示した場合、Action.javaでtype=1の処理を実行してしまいます。 再表示時(別の画面に遷移する時)にtype=0の初期化処理を行いたいのですがどのようにしたらいいでしょうか?

    • ベストアンサー
    • Java
  • chromeのポップアップについて

    お世話になります。 サイトを制作しており、その中でポップアップを表示させるページが 3つあります。 ポップアップが表示され、ページ内の選択肢を選択すると、 画面が消え、新たなポップアップが表示され…が3回ほどあります。 FirefoxとIE10では上記の3つのポップアップはちゃんと表示されておりますが chromeだけは、最初の2つまではポップアップが表示されますが 最後の1つだけ表示されません。 htmlやJavaScript等で、最後までポップアップを表示させる設定を することは可能でしょうか? また、ポップアップの仕様によって表示されない事はあるのでしょうか。 ちなみに、ポップアップ自体は<a>タグを使ったポップアップで、 JavaScriptではありません。 ご教示頂けると助かります。

  • ポップアップを表示させるタイミングについて

    javascript初心者です。 自分のHPを閉じたり、ブラウザの戻るボタンをクリックしたときにポップアップを表示させたいのですが、 どうすればよいのでしょうか?

  • ボタンにマウスがかさなるとポップアップ表示

    ボタンにマウスがかさなると説明文をポップアップ表示させたいのですが。参考サイトお教え下さい。 (できればjavascriptは使いたくないのですが)

    • ベストアンサー
    • HTML
  • Javascriptの値をJavaへ渡す方法

    JSPからJavascriptで処理後の値を、サーブレットへ渡す方法を教えて頂きたいです。 登録ボタンを押したあと、登録確認アラートが表示されるのですが、 同じ(登録ボタン押下の)タイミングでJavascriptで処理を実行し、 その値をjavaへ渡したいと思っています。 具体的には、 var aaa = a+b; <% aBean.setA(%>'aaa'<%); %> Javascriptで取得した「aaa」をJavaの引数として渡す方法を教えて頂けませんでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • タスクバーに表示されないポップアップの作成方法

    Webページ作成についての質問です。 あるボタン(リンク)をクリックすると、ポップアップウィンドウが表示される Webページを作成したいです。 通常JavaScriptの「window.open」を使用すれば、ポップアップウィンドウが 表示されるページを作成することは可能ですが、表示したポップアップウィンドウが タスクバーに表示されないような動作にしたいと考えています。 Ajaxの技術を使用すれば、タスクバーに表示されないオシャレなポップアップ を表示することも可能ですが、通常のIEのインターフェイスで表示させたいと 考えています。 上記のように、タスクバーに表示されないポップアップウィンドウの表示方法、 または、上記のようなWebページのURLをご存知でしたら、お教えいただけます でしょうか。

    • ベストアンサー
    • HTML
  • Firefoxのjavaでのポップアップ

    MacBook late2008(アルミユニボディ) OS X 10.6 SonwLeopard メモリ 4GB HDD 500GB Firefox 3.6 Firefoxで、2~3日前まで普通に使えてたのに なぜか急に、javaでのポップアップが表示されるのに 異常なほど時間がかかるようになってしまいました。 Firefoxをセーフモードで立ち上げると javaでのポップアップも、普通にサクっと表示されます。 どうすれば、今までのように使えるようになりますか? Firefoxに詳しい方、ぜひご教示ください。

    • ベストアンサー
    • Mac
  • ポップアップって?

    ポップアップってなんですか? 「ポップアップウインドウがブロックされました」 ってボタンを(いろいろ)押すと出てきます、 選択したところが見れなんですが・・・

  • ポップアップの表示

    ポップアップを表示したいのですが、「ポップアップブロックの設定」から「許可するWebサイトのアドレス」にサイト名を入力し、「追加」ボタンをクリックしても、ポップアップブロックの設定をはずしても表示されません。どこにブロックがかかっているのでしょうか?

専門家に質問してみよう