• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DB検索結果のテーブルにリンクが貼れません)

DB検索結果のテーブルにリンクが貼れません

このQ&Aのポイント
  • 検索結果のテーブルにおいて、任意の行をダブルクリックすると、その行が持つファイルを開く処理を考えています。しかし、試した結果、記述した<tr>の行で文法エラーが発生してしまいました。方法を教えていただけますでしょうか。
  • 質問者は、データベースの検索結果を表示するテーブルにおいて、任意の行をダブルクリックすると、その行が持つファイルを開く処理を実装したいと考えています。しかし、試した結果、記述した<tr>の行で文法エラーが発生してしまいました。
  • データベースの検索結果を表示するテーブルにおいて、任意の行をダブルクリックすると、その行が持つファイルを開く処理を実装しようとしています。しかし、試した結果、記述した<tr>の行で文法エラーが発生してしまいました。どのような方法があるでしょうか?

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

  • ベストアンサー
  • k17s
  • ベストアンサー率47% (9/19)
回答No.2

返事が遅れてしまいすみません。 >おそらく、filepathの"c:\a-san.pdf"は読み込めているような気がします。ファイルパスの書き方に問題あるのでしょうか? その通りだと思います。 ondblclickで実行されるwindow.openはJavascriptなのでクライアント側で実行されます。 つまりクライアントPC内にあると思われる「c:\a-san.pdf」を開こうとしますが、Javascriptにはそういった権限がないのでエラーになってるんだと思います。(※個人的推測です) よってサーバー側でのパスを指定してあげればいいと思います。 例: http://hoge.com/pdf/a-san.pdf //フルパス /pdf/a-san.pdf //絶対パス ../pdf/a-san.pdf //相対パス 等など。 最初の時点で私が気づくべきでしたね○r2 説明下手でわかりにくいとは思いますが、たぶんこれが原因だと思います。 頑張ってください。

foot-peng
質問者

お礼

>k17s様 ご回答有難う御座います。 まさしくその通りでした^^; filepathを以下の通り変更したところ、開くことができました('-'*) × c:\a-san.pdf ○ \\\\public\\a-san.pdf ( = \\public\a-san.pdf) DBの制約なのか、\ -> \\ とする必要がありました。 教えて頂き有難う御座いました☆

その他の回答 (1)

  • k17s
  • ベストアンサー率47% (9/19)
回答No.1

jspのソースではなく、HTMLとして表示した時のソースを出して頂けると回答しやすくなると思います。 <tr ondblclick="hoge.pdf"> NG:ダブルクリックされたらhoge.pdf (hoge.pdfをどうすればいいのかわかってくれない) <tr ondblclick="window.open('hoge.pdf');"> OK:ダブルクリックされたらhoge.pdfを新しいウィンドウで開く <tr ondblclick="window.open('hoge.pdf','_self');"> OK:ダブルクリックされたらhoge.pdfをこのウィンドウで開く <tr ondblclick="window.open('<%= rs.getString("filepath")%>');"> みたいな感じにすれば求めている動作をするのではないでしょうか? window.open:http://amenti.usamimi.info/windowopen.html

foot-peng
質問者

お礼

失礼しました。 > で試してみましたが、ダメでした。<%= ... %>のJSP部分がやはり認識されていないようです。 どうやら、認識されているようです^^; IEではうんともすんとも言わなかったのですが、FireFoxで開いてみると新規ウィンドウが起動し、 ============================================================ c というプロトコルはどのプログラムにも関連づけられておらず、Firefox でこのアドレスを開く方法が分かりません。 ============================================================ と表示されました。 おそらく、filepathの"c:\a-san.pdf"は読み込めているような気がします。ファイルパスの書き方に問題あるのでしょうか? 試しに、 <tr ondblclick="window.open('c:\a-san.pdf');"> と直接記述してみましたが、上記と同じ結果になりました。 なぜ、IEでは新規ウィンドウが開きもしないのが少し謎ですが・・・。 <tr ondblclick="window.open('http://localhost');"> と記述すると、IEでも新規ウィンドウが立ちあがります。

foot-peng
質問者

補足

>k17s様 ご回答有難う御座います。 <tr ondblclick="window.open('<%= rs.getString("filepath")%>');"> で試してみましたが、ダメでした。<%= ... %>のJSP部分がやはり認識されていないようです。 やりたい事としては、上記のwindow.openはイメージ通りなのですが・・・; ソースを、該当部分だけ絞って載せさせて頂きます。 index.html ///////////////////////////////////////////////////////////////////// <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <title>test</title> </head> <form name="search" method="post" action="/test/display.jsp" target="display"> <p>ID</p><input name="id" type="text"> <p>患者名</p><input name="name" type="text"> <br /> <input type="submit" name="btn" value="検索"> </form> <br /><br /> <hr color="#FF6666" size="6"> <p>検索結果</p> <iframe src="/test/display.jsp" name="display"></iframe> <hr color="#FF6666" size="6"> </body> </html> ///////////////////////////////////////////////////////////////////// display.jsp ///////////////////////////////////////////////////////////////////// <%@ page contentType="text/html; charset=Shift_JIS" import="java.sql.*, java.io.*"%> <jsp:useBean id="db" scope="session" class="report.atom.DatabaseAccess" /> <% try { // データベースに接続 db.open(); // クエリーを実行して結果セットを取得 ResultSet rs = db.executeQuery("select * from db_table;"); %> <html> <head> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>検索結果</title> </head> <body> <table align="center" border="1"> <tr> <th width="100">ID</th> <th width="150">名前</th> </tr> <%-- JSP部分 --%> <% // パラメータも文字コード:Shift_JIS request.setCharacterEncoding("Shift_JIS"); // 入力データを格納 String qid = request.getParameter("id"); String qname = request.getParameter("name"); // パラメータが"null(初期状態)"か"空(空欄)"であった場合に、"%(0文字以上の任意の文字列)"を格納する。 if(qid == null || qid == "")qid = "%"; if(qname == null || qname == "")qname = "%"; // クエリ格納 String sql = "select * from db_table where id like '" + qid + "%' and name like '" + qname + "%'"; // 患者名 rs = db.executeQuery(sql); // 検索された行数分ループ while(rs.next()){ %> <tr ondblclick="window.open('<%= rs.getString("filepath")%>');"> <td><%=rs.getString("id") %></td> <td><%=rs.getString("name") %></td> </tr> <% } // end while %> </table> </body> </html> <% } catch (Exception e) { out.println("<font color=red><h3>エラー!</h3></font>" + e); e.printStackTrace(); } finally { // データベースへの接続をクローズします try { db.close(); } catch (Exception e) { e.printStackTrace(); } } %> /////////////////////////////////////////////////////////////////////

関連するQ&A