我想在Javascript中访问jsp数组。怎么可能?
JSpCode
<%!
String s[];
%>
<%
List l=(List)request.getAttribute("listResource");
System.out.println("The Elements In List::"+l);
if(l!=null)
{
System.out.println("The Size of List::"+l.size());
int siz=l.size();
Iterator itr=l.iterator();
while(itr.hasNext())
{
s=new String[siz];
int i=0;
s[i]=itr.next().toString();
System.out.println("The Elments are:"+s[i]);
i++;
}
}
%>
JavaScriptCode
function verify_details()
{
var resourceId=document.getElementById("res").value;
var rid=new Array();
rid=<%=s%>
alert(rid[0]);
}
我试过这样但我没有得到这些价值。
答案 0 :(得分:2)
JSP代码在服务器端执行,并生成文本。其中一些文本恰好是JavaScript代码。 JavaScript代码在客户端执行,其中Java数组不再作为数据结构存在。
写作时
rid=<%=s%>
您要求生成以下字符串:"rid=" + s.toString()
s
是一个String数组,生成的Javascript代码将如下所示:
rid=[Ljava.lang.String;@1242719c
这显然不是有效的JavaScript代码。
JavaScript代码,当您使用JSP生成它时,与HTML代码没有任何不同。如果要从包含“a”,“b”和“c”的String Java数组生成代码rid = ['a', 'b', 'c'];
,则需要遍历Java数组并输出单引号,后跟当前String后跟单引号后跟逗号。另外,您应该转义每个字符串以将引号字符转换为\',将换行字符转换为\ n等。使用来自commons-lang的StringEscapeUtils.escapeJavaScript
来执行此操作。