> メッセージリソースとして、jspに表示させる方法は可能なのでしょうか?
この質問の意味は、
(a)サーバー側のリソース(ファイルorDBor...etc)にエラーメッセージが定義されていて
(b)それをエラーメッセージとして使いたい(<bean:message key="****"/>で取り出せる)
(c)ただし、1度サブミットをさせて、strutsのvaridateで出すのではなく、
(d)送信前(送信ボタン押下時)にJavaScriptで値を検査してメッセージを表示させたい
(e)表示箇所は※1の箇所である
(f)もちろん、最初からエラーメッセージが表示されていてはいない
(g)DOMのappendChild()を使って何とかならないだろうか
ということと解釈しました。
ちなみにappendChildだと、何度もエラーになったときにエラーメッセージがいくつも出ると思うのですが・・・。
まず、他のJSP絡みの質問者の方々も返信で書かれていることですが、JSPではなくHTMLを記述してください。
表示されたブラウザを右クリック等して、表示したソースのことです。
たぶん、以下のようになっているはずです。HTML--------------------------------
<form action="***">
<input type="text" name="date1" value="[date1フィールドの中身]">
<input type="submit" value="送信" onclick="submitOn()">
<font color="red"><p id="pic">(※1)</p></font>
</form>
-------------------------------------
※1に、たぶん“メッセージリソース”の値が入っているであろう<bean:message key="****"/>を記述していた場合、
その部分はメッセージリソースの値に置き換わっています。
ただし、*.jsなどのJSPでないファイルにJSPやstruts等のカスタムタグを書いても変換されません。
ブラウザがJSPを表示しようとしたとき、どのようや通信・処理・変換などを行っているか、順に解説してみました。
(0)リンクのクリックやフォームの送信によって、ブラウザがリクエストを出す。
(1)ブラウザから該当JSPにリクエストが来る、もしくはサーブレットが該当JSPにリクエストをディスパッチする。
(2)該当JSPは、必要であれば自動的にJAVAに変換され、コンパイルされる。
(3)該当JSPは、そこに書かれていた内容からレスポンス(このケースはHTML)を生成してブラウザに返す。
(4)ブラウザはサーバーから受け取ったHTMLを表示しようとする。
(5)表示しつつ、その中で発見した他に読み込むべきファイル(jsファイルなど)をサーバーにリクエストする。
(6)サーバーは、リクエストされたファイルがJSPではない(例えばjsファイル)ので、返せる限りファイルをそのままの内容で返す。
(7)(4)から(6)を繰り返し、(4)のHTMLを最後まで表示しきったらそのページのロード完了
(補足)
(3)では、JSPのスクリプトレットが実行・展開され、カスタムタグが変換されて、HTMLが生成されます。
なので >>1 の 2. は、メッセージを変換されてpタグの間に記述された状態で、ブラウザが受け取ります。
(6)jsファイルにスクリプトレットやカスタムタグを記述しても変換されないので、>>1 の 1. はそのままカスタムタグが出力されています。
(7)表示された画面で動くJavaScriptは、(4)以降しか知りえません。(4)で受け取ったHTMLベースで動くのです。
つまり、HTMLに変換される前のJSPの記述や、サーバー側の変数の値などは直接参照・変更できません。
だから、JavaScriptに関する質問をするときは、JSPのソース(変換前)ではなく、ブラウザが受け取った(変換後の)HTMLを載せる方がよいのですよ。
結局「どうすればいいか」ですが、
(A)サーバー側からブラウザに渡したい変数の値、このケースでいう“メッセージリソース”は、サーバー側で変換しなければならない
(B)だから<bean:message key="****"/>はjspファイルに書かなければならない。
(C)かといって(B)を最初から表示できないので、いきなり表示されない場所に書く。
(C-1)その方法は、"pic"をスタイルシートで非表示にしておくとか(でもこの方法だとappendChild使わない)<p id="pic" style="visibility:hidden;"><bean:message key="****"/></p></font>
(C-2)JavaScriptの変数に持たせておくとか、いろいろあるJSP----------------------------
<script ...>
var ErrorMessage = "<bean:message key="****"/>";
</script>
(D)いざエラーになったら、それを表示すればよい
このような方針ではどうでしょうか。