こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

jspに組込んだJavaScript でjava文

jspファイルで、JvaScriptを組み込みscriptで
document.getElementById("id_name").innerHTML="<%~%>";
にして、"<%~%>"にJavaの文を書きこみたいと考えていますが上手くいきません。
どうすれば良いでしょうか?

【プログラム】
<select name="table_name2">
<script>
function show_tables()
{
var database_name = document.getElementsByName("database").value;
document.getElementById("option").innerHTML

="<% con = DriverManager.getConnection(\"jdbc:mysql://localhost/"+database_name+"\",\"user_name\",\"pass\");"
+"stmt = con.createStatement();"
+"rs=stmt.executeQuery(\"show tables\");"
+"ArrayList<String>list2=new ArrayList<String>();"
+"while(rs.next())"
+"{"
+"list2.add(rs.getString(\"Database\"));"
+"}"
+"con.close();"
+"stmt.close();"
+"int tables_size = list2.size();"
+"for(int k=0; k < tables_size; k++)"
+"{"
+"out.println(\"<option value=\"+list2.get(k)+\">\"+list2.get(k)+\"</option>\");"
+"}"
+"%>";
}
</script>
<div id='option'></div>

</select>

投稿日時 - 2014-02-14 02:16:07

QNo.8474326

すぐに回答ほしいです

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

<% ~ %> で囲まれた部分は、Java から見ると……

……と解答しようとして、ソースをよく見たら javaScript の変数の値を JSP で利用しようとしていますが、このようなことはできません。

JSP の処理はサーバーで行われ、ブラウザに送られてくるときには JSP のコードは HTML から消えています。
一方、JavaScript の処理はサーバーから HTML が送られた後でブラウザ上で行われます。

つまり、JSP が処理を行おうとしているときには JavaScript の処理はまだ動作していないので、その変数の値を参照しようと思ってもその値が確定していません。

投稿日時 - 2014-02-14 06:11:38

お礼

ご説明聞いて、何故できなかったのか自分なりは腑に落ちました。

【考えた解決案】
前もってサーバー側で、出力する可能性のあるものは全て書き出すが、非表示にして、
それをJavaScriptで条件に応じて、必要なもののみを非表示解除という方法で試みたいと思います。

有難うございます。

投稿日時 - 2014-02-14 18:27:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

こんにちは。

どの部分がサーバ側で処理されて、どの部分がクライアント側で実行されるかをきちんと理解すると、動作しない原因がみえてくると思います。

投稿日時 - 2014-02-14 06:16:17

-広告-
-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-