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

How to pass java string variable to the javascript function by jsp expression tag?

本文关键字:变量 函数 javascript 字符串 java jsp 何通过 表达式      更新时间:2023-09-26

我想使用jsp表达式标记将一个javaString变量传递给javascript函数参数。下面是我的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>

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

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

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

完整代码:

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

原因是当浏览器渲染页面时,它将str和num值直接放在代码中,因此看起来像:

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

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

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

str的声明应该是这样的,以使其工作:

String str = "''abcdefghij''";

请注意,您不能使用'"进行转义,因为这会破坏您的代码。