在我的JSP中,我有一个Java数组 menuNames ,我想从该数组中分配一个值到文本区域。在下面我提到了Javascript代码,请指教我更正代码..
function setMainMenuURL(index) {
document.getElementById("SelectedURL").value=<%menuNames[index]%>;
}
答案 0 :(得分:1)
使用JSP Expression
-
document.getElementById("SelectedURL").value=<%=menuNames[index]%>;
JSP表达式元素包含一个脚本语言表达式,该表达式被计算,转换为String,并插入表达式出现在JSP文件中的位置。
因为表达式的值被转换为String,所以您可以在JSP文件中使用文本行中的表达式,无论它是否用HTML标记。
表达式元素可以包含根据Java语言规范有效的任何表达式,但不能使用分号来结束表达式。
答案 1 :(得分:1)
您的Java代码(在JSP中)和JavaScript代码混淆了。在将任何内容返回给浏览器之前,Java代码在服务器端运行,并且与JavaScript代码无关。在Java代码运行之后,JavaScript在客户端运行,在用户的浏览器中运行。
您正在尝试做的事情 - 这是行不通的 - 是在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];
}
答案 2 :(得分:1)
你不能将java数组中的值赋给javascript函数,因为在客户端调用javascript函数而在服务器端调用java。所以在服务器端用java创建javascript数组
答案 3 :(得分:0)
请把它作为对Quoi答案的评论: 这样:
document.getElementById("SelectedURL").value=<%=menuNames[index]%>;
不起作用。因为“index”变量在编译的servlet中是未定义的。