【问题标题】:accessing Java variable from Javascript in JSP [duplicate]在JSP中从Javascript访问Java变量[重复]
【发布时间】:2024-12-14 04:55:02
【问题描述】:

可能重复:
JSP Variable Accessing in JavaScript

我在 jsp 页面上有一个 java 变量和一个 javascript。

<% int max=70; %>

如何从脚本中获取变量?

var x = ???

我尝试了 document.getElementById() 但不幸的是它似乎不起作用,因为它不是 html 元素

这是我的错误:

无法为 JSP 编译类:

An error occurred at line: 13 in the jsp file: /search.jsp
max cannot be resolved
10:     function validateForm() {
11:         var x=document.forms["search"]["capacity"].value;
12:         var y=document.forms["search"]["date"].value;
13:         var m=<%=max%>;
14:         if (isNaN(x)) {
15:             alert("Capacity must be an Integer");
16:             return false;

【问题讨论】:

    标签: java javascript jsp variables


    【解决方案1】:

    JSP 是一个 HTML 代码生成器。 JS 是 HTML 的一部分。

    只要让 JSP 相应地打印 JS 变量即可。

    var x = <%=max%>;
    

    在浏览器中打开页面,右键单击并查看源代码以验证 JSP 生成的 HTML/JS 语法是否正确。

    另见:


    与具体问题无关,使用 scriptlets 十年来一直被认为是不鼓励的。要了解正确的方法,请仔细阅读How to avoid Java code in JSP files? 假设max 在EL 范围内可用,您可以将其打印如下:

    var x = ${max};
    

    【讨论】:

    • 这是我的错误 Unable to compile class for JSP: An error occurred at line: 13 in the jsp file: /search.jsp max cannot be resolved 10: function validateForm() { 11: var x =document.forms["搜索"]["容量"].value; 12: var y=document.forms["search"]["date"].value; 13: 变量 m=; 14: if (isNaN(x)) { 15: alert("容量必须是整数"); 16:返回假;
    • 这只是意味着max 没有在同一范围内声明。您确定在同一范围内有 &lt;% int max=70; %&gt; 吗?例如,如果它位于不同的 JSP 页面或方法声明中,那么它显然无法工作(就像在普通 Java 类中一样)。