如何通过jsp表达式标记将java字符串变量传递给javascript函数?

时间:2015-03-22 17:34:34

标签: java javascript jsp

我想使用jsp表达式标签将java String变量传递给javascript函数参数.Below是我的jsp页面。

First.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
        <script>
            function stringGenerate(str){
                var x = document.getElementsByTagName("input");
                x[0].value = str;
            }
            function numberGenerate(num){
                var x = document.getElementsByTagName("input");
                x[1].value = num;
            }
        </script>
    </head>
    <body>
        <%
            String num ="1234567890";
            String str = "abcdefghij";
        %>

        <input type="text" name="string" readonly="readonly"/> &nbsp;&nbsp;
        <input type="text" name="number" readonly="readonly"/><br/><br/>

        <input type="button" value="String Generate" onclick= "stringGenerate(<%=str %>)" /> &nbsp;&nbsp;
        <input type="button" value="Number Generate" onclick= "numberGenerate(<%=num %>)" />
    </body>
</html>

当我点击值为&#34; Number Generate&#34;的按钮时,num变量值(1234567890)将显示在文本框上(name =&#34; number&#34;)但是当我点击在具有值&#34;字符串生成&#34;的按钮上,相应的文本框上没有显示任何内容(name =&#34; string&#34;)。这里num和str都是字符串类型可变但为什么只有num变量值显示在文本框中,为什么不显示str变量值?

2 个答案:

答案 0 :(得分:2)

原因是当浏览器呈现页面时,它会将str和num值直接放在代码中,所以它看起来像:

<input type="button" value="String Generate" onclick="stringGenerate(abcdefghij)"/>

浏览器基本上认为您正在尝试引用名为'abcdefghij'的Javascript变量。

您应该在字符串文本之前和之后添加'字符,让javascript知道它应该使用该文本的值,而不是搜索具有该名称的变量。

str的声明应该如下所示:

String str = "\'abcdefghij\'";

请注意,您无法使用\"转义,因为这会破坏您的代码。

答案 1 :(得分:1)

在HTML中使用字符串时尝试使用单引号'

onclick= "stringGenerate('<%=str %>')"
                         ^        ^

完整代码:

<input type="button" value="String Generate" onclick= "stringGenerate('<%=str %>')" />