
現在、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で質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- PHP PHP MySql ページング 2 2022/09/20 06:38
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- エッセイ・随筆 尋常小学校唱歌『さくら さくら』の解釈について以下のものは成立しますか?普通じゃおもろない? 7 2023/02/26 16:52
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
このQ&Aを見た人はこんなQ&Aも見ています
-
Javascriptの値をJava(JSP)へ渡す方法
Java
-
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
count(*)で取得した値をJAVAの変数に代入するには?
Java
-
-
4
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
5
確認ダイアログを表示出来ない
JavaScript
-
6
JSPでメッセージボックスを表示したい
Java
-
7
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
8
private static という変数の修飾
Java
-
9
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaプログラムからポップアッ...
-
ラジオボタンの選択判定
-
tryの終了
-
Jquery,JSON,Ajax,PHP連携
-
JavaでVBのDOEVENTSと同様の処...
-
ブラウザを閉じた後のサーバ側...
-
ラベルの表示までが異常に遅い...
-
WPF C#でF10のイベント取得方法...
-
Androidアプリで本体の音量変更...
-
[Java] while(true)の意味
-
JAVA ID重複処理
-
処理実行後、終了させないで最...
-
Javaでのデバッグコード削除
-
JavaScriptからJAVAクラスを呼...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
レコード件数の表示
-
僕の出身中学校は200人同級生が...
-
private static という変数の修飾
-
今日は こどもの日 で、良い天...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Java] while(true)の意味
-
tryの終了
-
Javaでのデバッグコード削除
-
Javaアプリケーション実行の返...
-
Javaプログラムからポップアッ...
-
onBlurとonFocusの処理順序につ...
-
Tomcat高負荷時の設定について
-
数値の定数を付ける時
-
アコーディオンメニューをアン...
-
ラジオボタンの選択判定
-
ラベルの表示までが異常に遅い...
-
ExcelVBA で文字列の特定の文字...
-
C#で別スレッドの終了を知りたい
-
素数判定を再帰処理で
-
JavaScriptからJAVAクラスを呼...
-
switch文の中に、throws new Ex...
-
PHPでDB処理中にプログレスバー...
-
C#の処理をリアルタイムに表示...
-
Windowsサービスの処理
-
ftp 同時複数接続の負荷テスト...
おすすめ情報