在JSP中编译有关变量(范围?)的错误

时间:2012-05-01 16:23:30

标签: java jsp scope

考虑这个例子:

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

我收到编译错误:

testNumber cannot be resolved to a variable

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

2 个答案:

答案 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; %>