1

考虑这个例子:

<% int testNumber = 1; %>
//Some HTML goes here
<%=testNumber%>

我得到编译错误:

testNumber cannot be resolved to a variable

有人可以解释发生了什么吗?

4

2 回答 2

3

您需要确保您了解变量范围。它在scriptlet中与普通 Java 类中的相同。

因此,如果您实际上有例如

<%
   if (someCondition) {
       int testNumber = 1;
   }
%>

...

<%=testNumber%>

然后你会得到这个错误(在普通的 Java 类中也是如此!)。要解决此问题,您需要确保在相同的范围内声明变量,如有必要,使用默认值。

<%
   int testNumber = 0;

   if (someCondition) {
       testNumber = 1;
   }
%>

...

<%=testNumber%>

与具体问题无关,使用scriptlet被认为是不好的做法

于 2012-05-01T16:27:52.633 回答
-1

抛开设计问题,尝试将变量声明为全局变量:

<%! int testNumber = 0; %>
于 2012-05-01T16:32:38.430 回答