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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

4561閲覧

onlordの処理のタイミング

exten

総合スコア15

JSP

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/11/29 07:05

編集2016/11/29 07:46

いつも、お世話になっております。
JSPで使用するonlord について質問させて頂きます。

<body onlord="document.form.name.focus()selectedDate()"> JSPが全て読み込まれた後に実行されるということですが、 onlordの処理が最後に行われる為、スクリプトレットでプルダウンのselectedが解除されてしまう処理になっています。 そこでonlordの優先させて、後にスクリプトレットを動かす事はできるのでしょうか?

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

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

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

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

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

himakuma

2016/11/29 07:38

javascriptのonloadのことを言ってますか?
guest

回答4

0

そこでonlordの優先させて、後にスクリプトレットを動かす事はできるのでしょうか?

不可能です。

スクリプトレットとは<% %>のようなコードのことですよね?
これはサーバーサイドで実行される処理で、クライアントにページが表示される前の処理になります。
JSPのスクリプトレットが処理された結果がHTMLとして生成されて、これがクライアント側に送信されます。

これに対してonloadはクライアントのブラウザでページが全て表示された後にJavaScriptで実行する処理になるので、スクリプトレットより先にJavaScriptを実行するということはありえません。
これはonloadに限らず、HTML上のどこにJavaScriptを書いても同じです。

onlordの処理が最後に行われる為、スクリプトレットでプルダウンのselectedが解除されてしまう処理になっています。

この部分が意味不明です。もう少しやりたいことや現在の問題点をサンプルコード等で詳細に書いてもらえれば、他の解決策は出てくると思います。

投稿2016/11/29 08:13

編集2016/11/29 08:17
tag1216

総合スコア63

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

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

exten

2016/11/29 08:36

onlordのselectedDate()で、日数のプルダウンが表示されおり、プルダウンは昇順で1日が表示されるようになっています。 ただ、サーバに日数が登録されてた場合、登録されてる日数が選択状態にしたいのです。 <select name="day"id="day"> <% if(Bean.getInData !=null){ %> <option value="${BEAN.indate}"selected="selected"> <% } %> </select> こんな感じです、onLoarのselectDate()で初期表示されてしまいます。引数が渡せずにいるのも原因でもあるので、ひとつひとつ確認しているところです。申し訳ないです
tag1216

2016/11/29 09:20

サーバーに登録されている値をJavaScriptの変数に代入して、それを使って選択状態にすればいいです。 ``` <script> var aaa = "<%= BEAN.indate %>"; </script> ``` あるいは、プルダウンの作成をサーバーサイドで(JSPのスクリプトレットで)作成してもいいと思います。
guest

0

まさかとは思いますが

onlordonload ← タイポ?

投稿2016/11/29 08:41

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

exten

2016/11/29 08:44

書き間違えました。
exten

2016/11/29 08:45

onloadです。
guest

0

ベストアンサー

onloadの処理をjavascriptで記述していると思いますが、
全て読み込んでいない状況でjavascriptが正常に動作するか怪しいと思います。
(使用するタグなどが読み込まれていないなど)

今回の処理のみだとselectedがあれば何もしないか、
selectedをonloadの処理内で行えば良いかと思います。

あとJSPが全て読み込まれた後というのは正しくない気がします。
JSPで生成されたHTMLが全て読み込まれた後です。
※「JSPが全て読み込まれた後」だとサーバー側の処理のように見えます。

追記:下記のような感じに直せばいけるのでは?

HTML

1<body onlord="document.form.name.focus()selectedDate()">

HTML

1<script> 2function pageOnload() { 3 // ここで選択する値を保持 4 var selectedVal = '<% Bean.getInData %>'; 5 document.form.name.focus(); 6 selectedDate(); 7 8 // ここで保持した値を元にselectタグのオプションを回してselectedをつけるか、新規追加? 9 // ※jQueryとか使っていれば簡単に記述できる 10} 11</script> 12<body onlord="pageOnload()">

投稿2016/11/29 07:57

編集2016/11/29 08:58
himakuma

総合スコア952

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

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

exten

2016/11/29 08:18

私は、サーバ側でJSPのスクリプトレットが読み込まれてそれを、HTMLに書き換えて クライアントに送っているものだと思っていました。 Syntax error on token "${BEAN.inDate}", delete this token selectedDate()の引数にEL式やスクリプトレットいれても、エラーを吐かれたので順番を変えれるんかなって思ってました。
himakuma

2016/11/29 08:24

「<% %>」で囲まれている部分はサーバー側の処理ですが、javascriptはクライアントの処理です。 JSPとjavascriptがごっちゃになっている気がします。JSPでの処理の流れの理解が不十分な気がします。
himakuma

2016/11/29 08:30

「JSPのスクリプトレット」と「javascript」は違うものです。
himakuma

2016/11/29 08:50

tag1216さんへのコメントですが、selectedDate()を実行した後に、selectedをするjavascriptをHTMLz上に追記するればよいのでは?
exten

2016/11/29 09:13

jQueryはまだ使えないですが、himakumaさんの参考に書きなおしてみます。 誤字が多すぎて読解するのに大変だったと思いますが、ありがとうございました。
guest

0

onloadに書いてある全て読み込まれた後に実行したくない処理を、全て読み込まれる前の処理に記載すればよいのではないでしょうか。
onloadは全て読み込まれた後に実行されます。

投稿2016/11/29 07:45

tantanegg

総合スコア213

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

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

tantanegg

2016/11/29 08:01

記載のJavaScriptを実行するにはhtmlタグが読み込まれている必要があります。 htmlタグが読み込まれているということはjspでの処理が完了していることにもなります。 スクリプトレットでselectedの指定を行わずにjavascriptで行うなどの対策が必要かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問