JSP内のScriptの部分をjsファイルに外だしする方法

このQ&Aのポイント
  • JSPとサーブレットで作成されたWebアプリを開発しています。スクリプトの部分をjsファイルにまとめたい場合、サーブレットからの値をjsファイル内で使う方法を知りたいです。
  • JSPとサーブレットで作成したWebアプリで、スクリプトの部分を外部のjsファイルにまとめたいです。しかし、サーブレットからの値をjsファイル内で使う方法がわかりません。どうすれば実現できるでしょうか?
  • JSPとサーブレットで作成されたWebアプリで、スクリプトの部分を外部のjsファイルにまとめたいです。しかし、サーブレットからの値をjsファイル内で使う方法が分かりません。どのようにすれば解決できるでしょうか?
回答を見る
  • ベストアンサー

JSP内のScriptの部分をjsファイルに外だしする方法

JSP内のScriptの部分をjsファイルに外だしする方法 JSPとサーブレットで作成されたWebアプリを開発しています。IE7以上 今回JSP内のスクリプトの部分をjsファイルにまとめようと思っているのですがサーブレットからの値(<%= %>)をどのようにしてjsファイル内で使用する方法を教えて下さい。 function keyEnter(idx) { if(event.keyCode != 13) return; if(document.data.text1[idx].name == "<%= Param.ID %>"){ document.data.<%= LoginParam.PASSWORD %>.focus(); } else if(document.data.text1[idx].name == "<%=Param.PASSWORD %>"){ formSubmit(); } } <%= Param.ID %>, <%=Param.PASSWORD %>はサーブレットからの引数です。 これが外だしにするとエラーになります。 いい案があれば教えてください。

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

  • ベストアンサー
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

jsp側では飽くまでもhtmlに書かれた物(<%= %>)を置き換えて出力する仕掛けなんだよね。 javascriptはhtmlじゃないからやるとしたらjavascript側からサーバへコードなりhtmlなりを取得するコードを書くという形になるんじゃないかな。 或いはjspそのものがjsを丸ごと吐く形。phpやperlでよく見かけるようなやつだね。

その他の回答 (1)

noname#114391
noname#114391
回答No.2

<%=%>が使用できるのは拡張子がjspのファイルです。 jsファイル内では使用しても期待の通りの動作とはならないと思います。 代替案は思いつきませんでしたが、綺麗な形で実装するのは難しいかもしれません。 ご要望とは異なりますが、jsp内にこのfunctionだけ書いてしまうのが一番簡単なように思います。

関連するQ&A

  • jspでjavascript関数へ引数を渡す方法

    最近Webアプリの勉強をし始めたばかりの初心者です。 今、jspでjavascript関数へ引数を渡す方法がうまくいかず困っています。 以下はjspファイルの該当部分の抜粋です。 やりたいこととしては、画面上で参照ボタンを押したときに、"reference"という文字列を 一度javascript関数を介してサーブレットへ渡すということです。 <head> <script type="text/javascript"> <!-- function func(param){ alert(); document.getElementById("param").name = param; } // --> </script> </head> <form action="/tomcat_test/servlet/hello" method="POST"> <input type="hidden" name="param" id="param"> <input type="button" value="参照" onclick=<%= "func('reference')" %>/> </form> いろいろ調べてみたのですが、なかなかうまくいかずに困っています。 そもそも、参照ボタンを押してもonclickがうまく動いていないようで、 まずその問題を解決したいです。 onclickタグの使い方を間違っているのでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • jsファイルで配列を定義し、jsファイルを切りかえて使う

    お世話になります。 jsファイルで配列を定義し、その配列の内容を表示しています。 いくつかのjsファイルで配列を定義し、そのjsファイを切りかえることにより、表示する配列の内容を切りかえることはできないでしょうか。 例えば data_a.js DataAry = new Array( new WNData('2006/11/10','ああ','・・.html'), new WNData('2006/11/10','いい','・・.html'), ・・・・・ ); data_b.js DataAry = new Array( new WNData('2006/11/10','aa','・・.html'), new WNData('2006/11/10','bb','・・.html'), ・・・・・ ); dspDataAry.jsで function WNData(Date,Cmnt,Href,Target){ this.Date=Date; this.Cmnt=Cmnt; this.Href=Href; } function DspData(){ strhtml="・・・・ (DataAryを表示するhtmlを作成) return strhtml; } dspDataAry.htmlで <script type='text/javascript' src='dspDataAry.js'></script> <script type='text/javascript' src='data_a.js'></script> <body> <script type='text/javascript'><!-- document.write DspData(); //--> </script> <input id="btn_b" type="button" value="bを表示" onClick="bを表示する関数"<br> </body> とすれば、data_a.jsの配列の内容が表示されます。 ボタン「bを表示」を押すことにより、 data_b.jsを読み込んで、その内容を表示するようにできないものでしょうか。 onClick="bを表示する関数"この「bを表示する関数」をいう関数をどのように書いたらよいのかわかりません。 data_a.js、data_b.jsで定義する配列名は同じとします。 data_c.js、data_d.js・・・といくつかに分けたく思っています。 前もってdata_b.jsを読み込むのでなく、必要に応じて読み込んで表示するようにしたいのですが。 よろしくお願いいたします。

  • JSP内で外部jsファイルを指定する

    昨日から散々悩んでいます。 tomcatのJSPから外部jsファイルが読み込めません。 最初htmlのみでテストしたのですが そのときは何の問題も無く動きました。 URLの指定の仕方かなと思いましたが、 cssのほうは同じ指定の仕方で効いています。 <!---------- JSP内容 ------------------------> <!-- [テスト]ボタン押下でscript実行 --> <html> <head> <title>テスト</title> <script Language='JavaScript'    type='text/javascript' charset="shift_jis" src='/Test/script/Script.js'> </script> <script language='JavaScript' type='text/javascript'> <!-- function test(){ jstest(); } function test1(){ alert("test1:OK"); } // --> </script> <link rel="stylesheet" href="/Test/css/Style_ver1.css" type="text/css"> </head> <body> <form> <input type='button' class="button" value='テスト' onclick="test()"> </form> </body> </html> <!---------- 外部js内容------------------------> function jstest(){ alert("jstest:OK"); } <!---------------------------------------------> onclick="test1()"にすると動きます。 以前に作られた別アプリケーションのJ2EEのソースを見ると、 src=<c:url とcoreタグが使用されています。 coreタグの使用なしにURLを書くことはできないのでしょうか? すいませんが、どなたか教えてください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • JSの外部ファイルの書き方を教えてください

    よろしくおねがいします。 私は初心者で技術者ではないですが、JavaScriptの項目はここだけのようなので質問させてください。 とある無料配布しているサイトからお借りしたもので、リンクにマウスが乗ると説明文がでるガイドメッセージのJSです。 外部ファイルはまた別のサイトで説明されていたとおりに書きました。 ほかのJSはそれで正常に動きましたが、このガイドメッセージだけはなぜか動きません。 サンプルではすべてHTML内に書いてありましたが、その通りにすると正常に動きます。 外部にするときはどこか変える場所があるのでしょうか・・・??? 自分はこんなふうに書いたのですが・・・ (外部ファイル内) function showMsg (text) { if(!document.getElementById) return; var msgbox = document.getElementById("msgbox"); msgbox.innerHTML = text; } (HTML内) (HEAD内) <script language="JavaScript" src="ファイルURL"></script> (body内) <a href="ファイルURL" onmouseover="showMsg('リンクの説明');" onmouseout="showMsg('いらっしゃいませ');">リンク文字</a> (リンクを表示させる場所) <p id="msgbox" lang="ja"> いらっしゃいませ</p>

  • scriptをjsファイルに外出しにしたいのですが・・・

    こんにちわすいません! 初心者です!! 今回仕事で既存のファイルのJSPファイルの中のjavascriptのscript部分をjsファイルに外出しにしたいのですが・・ 引数にパラメータをしている関数がありまして・・・どうやればよいのかどなたか教えてください。 こんな関数です。 function sendSrchAction(lAction){ with (document.forms[0]){ actionNameTxt.value=lAction; cmdtyFlagTxt.value="<%=AAConfig.AAAAA_FLAG_SRCH%>"; action='<%=BBBSrvSite%>'; submit(); } } ="<%=AAConfig.AAAAA_FLAG_SRCH%>";この部分をどうすればよいのか・・すいませんが宜しくお願いいたします。

  • *.jsをHTMLで読み込んでHTMLに書かれたスクリプトを外部スクリプトで処理したいんですが。。

    JAVAスクリプトを外部ファイルに下記の様に書き出して外部ファイルをHTMLファイルに読み込んで、 読み込んだHTMLに書かれたスクリプトを外部ファイルで処理したいんですが 上手くいきません。読み込みの方法とか記述方法について教えてもらいたいのですが、よろしくお願いします。 [load.js] var win1; function openwin(){ win1 =window.top.frames[3]; } function loading_mes(message){ if(win1.closed==true){ openwin(); } win1.focus(); win1.document.open("text/html"); win1.document.write("<HTML><BODY bgcolor=\"#000000\" text=\"#ffffff\">"); win1.document.write("<p style='margin-top: -10'>"); win1.document.write("<H3>" + message + "</H3>"); win1.document.write("</p>"); win1.document.write("</BODY></HTML>"); win1.document.close(); } openwin(); loading_mes("load stert"); [HTMLでの処理したい事] <BODY onLoad="setTimeout('win1.close()',1000)"></BODY> <script type="text/javascript"> loading_mes("■■■■■■"); </script> <script type="text/javascript"> loading_mes("Loading Done"); </script> です。よろしくお願いします。どん詰まり状態で手も足も出ません(^^;

  • *.js ファイルの読み込みについて

    お世話になります。 *.jsファイルを読み込むのに <script type='text/javascript' src='abc.js'></script> とすれば、できます。 これを、 <script type="text/JavaScript"> <!-- src='abc.js; ・・・・・・・・・ ここにabc.js内の関数などを記載 ・・・・・・・・・ //--> </script> と、いう形にできないものでしょうか。 このままだと、abc.jsは読み込まれません。 よろしくお願いします。

  • Flash CS3の表示タグをJSファイルにしたい

    Flash CS3で、ビデオを表示させるようにするために、パブリッシュをしたら、下記のタグがhtmlファイル内に書かれました。が、このタグをhtmlファイルにそのまま使うと、とても邪魔に見えるので、この部分をJSファイルにして読み込んでFlashビデオを表示させたいのですが、どうしたら良いでしょうか。以前は、外部のJSファイルにdocument.writeを使ってやっていたのですが、それ以外の方法はありますでしょうか。 ↓ここから <script language="javascript"> if (AC_FL_RunContent == 0) { alert("このページでは \"AC_RunActiveContent.js\" が必要です。"); } else { AC_FL_RunContent( 'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', '180', 'height', '120', 'src', 'fl_js/blood_01_180', 'quality', 'high', 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'align', 'middle', 'play', 'true', 'loop', 'false', 'scale', 'showall', 'wmode', 'window', 'devicefont', 'false', 'id', 'blood_01_180', 'bgcolor', '#ffffff', 'name', 'blood_01_180', 'menu', 'false', 'allowFullScreen', 'false', 'allowScriptAccess','sameDomain', 'movie', 'fl_js/blood_01_180', 'salign', '' ); //end AC code } </script> <noscript> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="180" height="120" id="blood_01_180" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="fl_js/blood_01_180.swf" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="fl_js/blood_01_180.swf" loop="false" menu="false" quality="high" bgcolor="#ffffff" width="180" height="120" name="blood_01_180" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </noscript> ↑ここまで よろしくお願いいたします。

  • scriptとJSPについて質問です。

    scriptとJSPについて質問です。 現在は下記のソースのように追加ボタンを押すことで、 テキストボックスがどんどん追加されていきます。最上行削除ボタンで一番上のテキストボックスは消せます。 最下行削除ボタンで一番下のテキストボックスは消せます。 この削除の仕様が悪くて、 追加された全てのテキストボックスの前にチェックボックスを入れて、 チェックしたもののみを削除ボタンで消すようにしたいです。 どのようにソースを書くのかをご教示いただきたいです。 「現在のscriptソース」 function AddTableRows1(){ var counter = 0; counter++; var table1 = document.getElementById("table1"); var row1 = table1.insertRow(counter); var cell1 = row1.insertCell(0); var cell2 = row1.insertCell(1); var cell3 = row1.insertCell(2); cell1.setAttribute("class","name"); cell2.setAttribute("class","naiyo"); cell3.setAttribute("class","zyoukyou"); var HTML1 = '<input name="gyoumuname" ID="gyoumuname" type="text" name="width:100em;height:10em">'; var HTML2 = '<textarea name="gyoumunaiyo" ID="gyoumunaiyo" Style="width:50em;height:5em"></textarea>'; var HTML3 = '<input name="gyoumuzyoukyou" ID="gyoumuzyoukyou" type="text" name="width:100em;height:10em">'; cell1.innerHTML = HTML1; cell2.innerHTML = HTML2; cell3.innerHTML = HTML3; } function DelTalbeFirstRow1(){ var table1 = document.getElementById("table1"); if(table1.rows.length > 1){ table1.deleteRow(1); } } function DelTalbeLastRow1(){ var table1 = document.getElementById("table1"); if(table1.rows.length > 1){ table1.deleteRow(table1.rows.length-1); } } 「JSPソース」 <tr> <th>タイトル</th><th>内容</th><th>状況</th> </tr> </table> <input type="button" value="追加" onClick="AddTableRows1();" /> <input type="button" value="最上行削除" onclick="DelTalbeFirstRow1();" /> <input class="btn1" type="button" value="最下行削除" onclick="DelTalbeLastRow1();" />

  • md5.jsとbase64.jsがスクリプトのJavaScriptのパ

    md5.jsとbase64.jsがスクリプトのJavaScriptのパスワード設定について、教えて下さい。 JavaScriptを扱っているサイトで、以下のを使用しているのですが、そのサイトであまり詳しい説明が書かれてないので四苦八苦しています。 契約しているサーバーのセキュリティー上、CGIとPHPが使えないので、JavaScriptを使用したいと思っています。 インデックスページに設置して、パスワードが通ったらトップページに移動するようにさせたいと思っています。 以下ので、どこが不備なのか分からないので、教えて下さい。 JavaScriptに関しては初心者なのですが、初心者で以下のは難易度が高いのでしょうか? また、md5.jsとbase64.jsそのものの設定が問題なのでしょうか? 本当に困っていますので、是非とも教えて下さい。 お願いします。 <html> <Head> <script language="JavaScript" src="md5.js"></script> <script language="JavaScript" src="base64.js"></script> <script language="JavaScript"><!-- var pwmd5 = ""; function passchk() { var pw; pw = document.f.passwd.value; pw = base64encode(pw); pw = MD5_hexhash(pw); if(pw ==pwmd5 ) else alert("パスワードが違います"); } // --> </script> <body> <form name="f"> <input type=text name="passwd"><input type=button value="入室" onClick="passchk()"></form></body> </Head> </html>