如何将jsp数组变量访问为javascript?

时间:2011-07-02 08:57:26

标签: javascript jsp

我想在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]);  

}

我试过这样但我没有得到这些价值。

1 个答案:

答案 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来执行此操作。