マンガでよめる痔のこと・薬のこと

昨日から散々悩んでいます。
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を書くことはできないのでしょうか?

すいませんが、どなたか教えてください。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

環境面などいろいろな要素があるので、ひとつひとつ怪しいところを潰してみましょう。


(1)外部のjsファイルを読み込めているか?
(2)読み込んだjsファイルが動かせるか?

(1)については、ブラウザのアドレスバーに、
http://~ホスト名~/Test/script/Script.js
としてみて、jsファイルがダウンロードできるか、確認してみてください。
ここで404NotFoundなどと出るならば、まずはサーバからファイルが取得できない事が問題なので、
・パスの指定が間違っていないか?
・Webサーバ側の設定が間違っていないか?
などを確認する必要があります。
http://~ホスト名~/Test/css/Style_ver1.css
は読み込めるということなので、これとの違いを比べてみるといいでしょう。

ダウンロードできているとしたら、今度はブラウザが読み込んだはずの、jsファイルがなぜ動作しないかという問題になります。
見た感じでは動作するスクリプトだと思いますが、
ブラウザがスクリプトエラーを警告していないか確認してみてください。

たぶん(1)でエラーになるのでは?と思っているのですが。
    • good
    • 2
この回答へのお礼

ありがとうございました。
大変お騒がせしましたが、実は実際使用するスクリプトの引数にJSPで作成したオブジェクトを持たせるつもりで、関数を呼び出していたのですが、そのオブジェクトを作成するのを忘れて、スクリプトでエラーがでて実行されていないだけでした。
ほんとにどんくさくてすいません。これからはもう少し注意します。
自己解決したのですが、締め切ることができなくて。
ごめんなさい。
これからも宜しくお願いします。

お礼日時:2005/03/30 17:47

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

QJavascriptの値をJava(JSP)へ渡す方法

登録ボタンを押したあと、登録確認アラートが表示されるのですが、
同じ(登録ボタン押下の)タイミングでJavascriptで処理を実行し、
その値をjavaへ渡したいと思っています。

具体的には、
var aaa = new Date();
<% aBean.setA(%>'aaa'<%); %>

Javascriptで取得した「aaa」をJavaの引数として渡す方法を教えて頂けませんでしょうか?
よろしくお願いします。

Aベストアンサー

JSP の中に埋め込んだ JavaScript は、ブラウザ側にて実行されるので値を渡せません。

どうしてもやりないのならば
1. 引き渡す専用の JSP を用意する。
2. その JSP 専用の URL を用意する。
3. JavaScript から非同期送信(AJAX)にて、URL に aaa の値を送る。
4. 引き渡す専用の JSP が HTTP 要求を解析し、aaa の値を得る。
5. 目的の JSP にて値を読めるように、セッション等の手段で保存する。

Qリクエストに応じたselectedの初期値設定方法

リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。

java servletからjspを表示する際に、
setAttributeした値に応じてプルダウンの初期値に設定するにはどうしたら良いですか?

以下の様にDetail.jspに移動する前に、NOをセットしています。
普通に実行したら、YESで表示されてしまいます。
jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

例)
[[[[[ShowDetail.java]]]]]
request.setAttribute("JAPAN", "NO");
request.getRequestDispatcher("/Detail.jsp")
.forward(request, response);

[[[[Detail.jsp]]]]
<form name="Japan">
<table border="1">
<tr>
<th>Japan</th>
<td>
<select name="Japan" id="Japan" >
<option value="YES">YES</option>
<option value="NO">NO</option>
<option value="KNOW">DON'T KNOW</option>
</select>
</td>
</tr>
</table>
</form>

リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。

java servletからjspを表示する際に、
setAttributeした値に応じてプルダウンの初期値に設定するにはどうしたら良いですか?

以下の様にDetail.jspに移動する前に、NOをセットしています。
普通に実行したら、YESで表示されてしまいます。
jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

例)
[[[[[ShowDetail.java]]]]]
request.setAttribute("JAPAN", "NO");
request.getRequestDispatcher("/Detail.jsp")
.f...続きを読む

Aベストアンサー

こんにちは。

>普通に実行したら、YESで表示されてしまいます。
>jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

あと、カテゴリがJavaScriptではなくJavaですね。

順に考えてみませんか。初期値を設定するには何が必要でしょうか。
今は何もしていないから一番上のYESが表示されています。
<option value="NO" selected="selected">とする必要がありますよね。
そうしたらそれを出力するようにJSPを記述すればいいわけです。

フレームワークを何も利用していなければ以下のようになると思います。

<%
// 例だとjapanにNOが入っている
String japan = (String)request.getAttribute ( "JAPAN" );
%>

<select>
<option value="YES"<%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %>>YES</option>
<option value="NO"<%= "NO".equals(japan) ? " selected=\"selected\"" : ""; %>>NO</option>
<option value="KNOW"<%= "KNOW".equals(japan) ? " selected=\"selected\"" : ""; %>>KNOW</option>
</select>

各optionでどの文字列が入っているかによってselected="selected"を出力すれば良いです。

<%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %>

上の記述は

if ( "YES".equals(japan) ) {
out.write ( " selected=\"selected\"");
} else {
out.write ( "" );
}
と同義です。
ようするにjapanにYESが入ってきたらselected="selected"を出力することにより初期選択項目とする。
NOが入ってくれば"YES".equals(japan)には該当しないので無出力、次の"NO".equals(japan)で該当するのでNOの<option>が初期値となります。

こんにちは。

>普通に実行したら、YESで表示されてしまいます。
>jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

あと、カテゴリがJavaScriptではなくJavaですね。

順に考えてみませんか。初期値を設定するには何が必要でしょうか。
今は何もしていないから一番上のYESが表示されています。
<option value="NO" selected="selected">とする必要がありますよね。
そうしたらそれを出力するようにJSPを記述すればいいわけです。

フレームワークを何も利用していなければ以下のようになると...続きを読む

Q

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング