dポイントプレゼントキャンペーン実施中!

現在、Javaプログラムにおいて以下のような
ことを実施したいと考えています。

1。画面上(JSP)からSQLで使用する条件を選び、ボタンをクリック
1.JavaからDBにアクセスし、検索結果件数を取得
2.件数をポップアップで表示し、「はい」もしくは「いいえ」を選択することで、処理を続行させるかさせないかを決定

1及び2については問題なく行えるのですが、3のやり方がよくわかりません。

DBの検索結果が仮に3件だとすると、ポップアップで
「3件が選択されました。処理を続行しますか」というメッセージとともに
「はい」、「いいえ」ボタンを表示させます。

ここで表示するポップアップは、できればJavaScriptで行いたいのですが可能なのでしょうか。
もしJavaScriptでなくても、とにかくポップアップが表示できるようにしたいと考えています。

大変恐縮ですが、よろしくお願いします。

A 回答 (3件)

補足の方も読ませて頂きました。



> ここで私の不明点として、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を呼ぶということもできるでしょう。
    • good
    • 1
この回答へのお礼

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

本当にありがとうございました。

お礼日時:2005/02/09 23:23

>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() してやればいいです。
    • good
    • 1
この回答へのお礼

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

ありがとうございました。

お礼日時:2005/02/09 23:24

function nantoka() {


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

って感じではいかがでしょうか?

この回答への補足

ご回答ありがとうございます。

確かに、その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)のやり方が良く分かりませんので、よろしくお願い致します。

補足日時:2005/02/06 19:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!