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