
現在、Javaプログラムにおいて以下のような
ことを実施したいと考えています。
1。画面上(JSP)からSQLで使用する条件を選び、ボタンをクリック
1.JavaからDBにアクセスし、検索結果件数を取得
2.件数をポップアップで表示し、「はい」もしくは「いいえ」を選択することで、処理を続行させるかさせないかを決定
1及び2については問題なく行えるのですが、3のやり方がよくわかりません。
DBの検索結果が仮に3件だとすると、ポップアップで
「3件が選択されました。処理を続行しますか」というメッセージとともに
「はい」、「いいえ」ボタンを表示させます。
ここで表示するポップアップは、できればJavaScriptで行いたいのですが可能なのでしょうか。
もしJavaScriptでなくても、とにかくポップアップが表示できるようにしたいと考えています。
大変恐縮ですが、よろしくお願いします。
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を呼ぶということもできるでしょう。
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() してやればいいです。
No.1
- 回答日時:
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)のやり方が良く分かりませんので、よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
Javascriptの値をJava(JSP)へ渡す方法
Java
-
JSPでメッセージボックスを表示したい
Java
-
-
4
count(*)で取得した値をJAVAの変数に代入するには?
Java
-
5
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
6
確認ダイアログを表示出来ない
JavaScript
-
7
ServletからServletへの値渡し
Java
-
8
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
9
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
10
getParameterで値が取得できず、困ってます
HTML・CSS
-
11
JSPファイルで生じるエラーをどのように修正するか分かりません
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンの選択判定
-
重い処理中のアニメーションgif...
-
Delphiのマルチスレッドの割り...
-
[Java] while(true)の意味
-
C# PostMessage BeginInvok
-
画面系イベントの優先度を上げたい
-
JavaScriptで・・・
-
中学のクラス数
-
「タイプ初期化子が例外をスロ...
-
インスタンス参照でアクセスで...
-
ヒグマを撃退
-
C#において、同じインスタンス...
-
VBScriptからストアドプロシー...
-
String.containsの反対機能はあ...
-
eclipse-Tomcatでのデバッグに...
-
private static という変数の修飾
-
PDFファイルから別ウィンドウで...
-
【sendkeysメソッドが動かずに...
-
サーブレットコンテキストの意...
-
0歳児の指しゃぶりに関して
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaプログラムからポップアッ...
-
Javaでのデバッグコード削除
-
tryの終了
-
Tomcat高負荷時の設定について
-
SwingUtilities.invokeLater(ne...
-
ラベルの表示までが異常に遅い...
-
vba Sleep関数について教えてく...
-
Delphiのマルチスレッドの割り...
-
ラジオボタンの選択判定
-
アコーディオンメニューをアン...
-
JSP、サーブレットの初期処理
-
ftp 同時複数接続の負荷テスト...
-
[Java] while(true)の意味
-
C#で別スレッドの終了を知りたい
-
switch文の中に、throws new Ex...
-
アロー関数がよくわかりません
-
セル範囲で文字を検索はFor必須?
-
PHP
-
Servlet+JSPを使ったWEBアプリ...
-
Javaプログラムから外部コマン...
おすすめ情報