考虑这个例子:
<% int testNumber = 1; %>
//Some HTML goes here
<%=testNumber%>
我得到编译错误:
testNumber cannot be resolved to a variable
有人可以解释发生了什么吗?
您需要确保您了解变量范围。它在scriptlet中与普通 Java 类中的相同。
因此,如果您实际上有例如
<%
if (someCondition) {
int testNumber = 1;
}
%>
...
<%=testNumber%>
然后你会得到这个错误(在普通的 Java 类中也是如此!)。要解决此问题,您需要确保在相同的范围内声明变量,如有必要,使用默认值。
<%
int testNumber = 0;
if (someCondition) {
testNumber = 1;
}
%>
...
<%=testNumber%>
与具体问题无关,使用scriptlet被认为是不好的做法。
抛开设计问题,尝试将变量声明为全局变量:
<%! int testNumber = 0; %>