質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Q&A

解決済

2回答

2772閲覧

jspの確認ダイアログに部品を表示

manmos

総合スコア55

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

0グッド

0クリップ

投稿2016/01/06 09:07

jspでデータベース(MySQL、以下DB)の情報を削除、または更新する際、確認ダイアログを表示させるようにしたのですがこの時メッセージにDBの情報を表示させるにはどのようにしたらよろしいでしょうか。
現状では画面にDBのカラムを一覧で表示させており、各レコードごとに表示、最後に削除のボタンを用意しています。

<c:forEach var="tmp" items="${list}">

<TD><c:out value="${tmp.name}" /></TD> //以下その他のカラム . . . <TD><a onClick="disp()">削除</a></TD>

といった感じです。
これが<body>でダイアログの表示は<head>に作成しています。(わかりにくくて申し訳ありません。)

function disp(){

// 「OK」時の処理開始 + 確認ダイアログの表示 if(window.confirm('◯◯を削除しますか?')){ location.href = "./Sakujo"; } else{ window.alert('キャンセルされました') }

}

といった感じでこの表示自体はできているのですがこの◯◯の部分にbodyのカラム情報(${tmp.name})を表示できるようにしたいです。
単純に${tmp.name}と入力しても何も表示されないのですがどうすれば良いでしょうか。

長文&難文失礼いたしました、どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

解決しました。
上部分にfunction disp〜と加える以外に、aタグの中でダイアログを作れるんですね。
このやり方だとループの中で作れるのでやりやすかったです。

argiusさん、どうもありがとうございました。

投稿2016/01/27 08:31

manmos

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

tmpという変数は、<c:forEach var="tmp" items="${list}">のループの中でだけ有効になる変数なので、ループの外にあるdisp関数に書いても無効になります。

JavaScript関数dispをループの中に書いたら、disp関数がリストの要素数だけコピーされてしまうので、それもダメですね。

削除ボタンは、要素数分用意されるのですから、そちらにtmpの情報を設定するようにすれば良いです。
そして、JavaScript関数disp関数にパラメーターを持たせて、そこにtmpの値を渡せるようにします。

例:

lang

1function disp(id, name) { 2 if(window.confirm(name + 'を削除しますか?')){ 3 location.href = "./Sakujo?id=" + id; 4 } 5} 6 7<c:forEach var="tmp" items="${list}"> 8 9<TD><c:out value="${tmp.name}" /></TD> 10<TD><a onClick="disp('${tmp.id}', '${tmp.name}')">削除</a></TD>

蛇足ですが、dispdeleteItemとかにしたほうが意味が分かりやすいと思います。

投稿2016/01/06 11:49

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manmos

2016/01/14 08:20

間が空いてしまって申し訳ないです。 function~の部分を書き換えてみたのですがダイアログには『undefinedを削除しますか?』という表示になってしまい値を渡すことはできませんでした。 この場合書き直すのはこの部分だけで良いのでしょうか、<c:forEach var="tmp" items="${list}">でループの中に情報の値を渡すように何か他に必要なことがあったりするのでしょうか。
argius

2016/01/14 08:29

回答のコード例の最後の行にある<a onClick="disp('${tmp.id}', '${tmp.name}')">の部分も書き換えていますか?
manmos

2016/01/27 03:09

はい、書き直しています。 ただやはりダイアログ画面には何も変化ないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問