私のJSPには、Java配列menuNamesがあり、その配列の値をテキスト領域に割り当てたいと思います。以下にJavascriptコードについて説明しましたが、コードを修正するようにアドバイスしてください。
function setMainMenuURL(index) {
document.getElementById("SelectedURL").value=<%menuNames[index]%>;
}
私のJSPには、Java配列menuNamesがあり、その配列の値をテキスト領域に割り当てたいと思います。以下にJavascriptコードについて説明しましたが、コードを修正するようにアドバイスしてください。
function setMainMenuURL(index) {
document.getElementById("SelectedURL").value=<%menuNames[index]%>;
}
Javaコード(JSP内)とJavaScriptコードを混同しています。Javaコードは、ブラウザに何かが返される前にサーバー側で実行され、JavaScriptコードとは何の関係もありません。JavaScriptは、Javaコードがすでに実行された後、ユーザーのブラウザーでクライアント側で実行されます。
あなたがやろうとしていること(これは機能しません)は、Javaコード内でJavaScriptパラメーターを使用することです。Javaはすでに実行されているので、それはまったく意味がありません。
最善の策は、Java配列を有効なJavaScript配列として出力し(JavaScript変数に保存)、それをJavaScriptコードで使用することです。このようなもの:
var javascriptArrayMenuNames = <%= Java code to output JSON representation of the array %>;
function setMainMenuUrl(index) {
document.getElementById('SelectedURL').value = javascriptArrayMenuNames[index];
}
使用JSP Expression
-
document.getElementById("SelectedURL").value=<%=menuNames[index]%>;
JSP式要素には、評価され、文字列に変換され、JSPファイルの式が表示される場所に挿入されるスクリプト言語式が含まれています。
式の値は文字列に変換されるため、JSPファイルでは、HTMLでタグ付けされているかどうかに関係なく、テキスト行内で式を使用できます。
expression要素には、Java言語仕様に従って有効な任意の式を含めることができますが、セミコロンを使用して式を終了することはできません。
javascript関数はクライアント側で呼び出されるのに対し、javaはサーバー側で実行されるため、java配列からjavascript関数に値を割り当てることはできません。したがって、javaを使用してサーバーサイドにjavascript配列を作成します
Quoiの答えへのコメントとしてそれを取ってください:これ:
document.getElementById("SelectedURL").value=<%=menuNames[index]%>;
動作しないでしょう。コンパイルされたサーブレットでは「index」変数が定義されていないためです。