考虑以下示例:

<% 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%>




与具体问题无关,使用小脚本被视为poor practice

10-07 12:18