【问题标题】:How to pass java string variable to the javascript function by jsp expression tag?如何通过jsp表达式标签将java字符串变量传递给javascript函数?
【发布时间】:2015-03-22 17:34:34
【问题描述】:

我想使用jsp表达式标签将java字符串变量传递给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>

当我单击值为“数字生成”的按钮时,num 变量值(1234567890)将显示在文本框(名称 =“数字”)但当我单击值为“字符串生成”的按钮时,那么对应的文本框(name="string")上没有任何显示。这里num和str都是字符串类型的变量,但是为什么文本框上只显示num变量值,为什么不显示str变量值?

【问题讨论】:

  • 检查 html 为我生成了什么 worked

标签: java javascript jsp


【解决方案1】:

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

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

完整代码:

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

【讨论】:

  • 非常感谢...运行正常。
【解决方案2】:

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

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

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

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

str 的声明应如下所示才能使其工作:

String str = "\'abcdefghij\'";

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2012-09-10
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多