35

我知道它不推荐,我应该使用标签库等。

但我仍然想知道在 JSP 脚本中声明方法是否合法:

<%
   public String doSomething(String param) {
      //
   }

   String test = doSomething("test");

%>

那合法吗?我收到了一些a ; is expected似乎不合适的奇怪编译错误(如 )。谢谢。

4

2 回答 2

57

您需要使用声明语法 ( <%! ... %>):

<%! 
   public String doSomething(String param) { 
      // 
   } 
%>
<%
   String test = doSomething("test"); 
%> 
于 2010-09-22T12:20:47.370 回答
16

了解jsp的工作原理:整个JSP被Tomcat转换成Java类。这个Java 类不过是Servlet。因此,您将在最后运行 servlet。

现在考虑您正在编写一个 Jsp 代码,该代码打印 2 个数字的总和,并传入一个方法

<body>
  <%!               
  public int add(int a,int b)           
          {                                     
    return a+b;
          } 
   %>

  <% 
  int k;                
      k=add(5,6);
  %>

  <%=                   
      k                     
  %>

</body>

因此,如果您要编写在 servlet 中打印出 2 个数之和的相同代码,您可能会在 doGet() 方法中编写它。

您会收到错误的原因是您在另一个方法中定义了一个方法(这违反了方法定义的规则)。

因此,我们将方法放在定义标签中,以便 if 形成一个新方法

于 2014-02-11T17:49:33.000 回答