【问题标题】:how to access the jsp array variable into javascript?如何将jsp数组变量访问到javascript中?
【发布时间】:2011-07-02 08:57:26
【问题描述】:

我想在 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++;
    }
}
%>

JavaScript代码

function verify_details()
{
    var resourceId=document.getElementById("res").value;
    var rid=new Array();
    rid=<%=s%>
    alert(rid[0]);  

}

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

【问题讨论】:

  • 是否有机会正确缩进代码,以便其他人稍作改动才能阅读?
  • 不确定这是什么,但您只是设置了s 的第一个元素。可能应该将i 的声明移到循环之外。

标签: javascript jsp


【解决方案1】:

JSP 代码在服务器端执行,并生成文本。其中一些文本恰好是 JavaScript 代码。 JavaScript 代码在客户端执行,Java 数组不再作为数据结构存在。

当你写作时

rid=<%=s%>

您要求生成以下字符串:"rid=" + s.toString()

s 是一个字符串数组,因此生成的 Javascript 代码将如下所示:

rid=[Ljava.lang.String;@1242719c

这显然不是有效的 JavaScript 代码。

当您使用 JSP 生成 JavaScript 代码时,它与 HTML 代码没有任何不同。如果要从包含“a”、“b”和“c”的 String Java 数组生成代码rid = ['a', 'b', 'c'];,则需要遍历 Java 数组并输出一个单引号,然后是当前字符串,然后是一个单引号引号后跟逗号。此外,您应该转义每个字符串以将引号字符转换为 \',将换行符转换为 \n 等。使用 commons-lang 中的StringEscapeUtils.escapeJavaScript 来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2015-07-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多