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 の働きを理解する: Tomcat によって JSP 全体が Java クラスに変換されます。この Java クラスはサーブレットに他なりません。したがって、最後に実行するのはサーブレットです。

ここで、メソッドに渡された 2 つの nos, の合計を出力する Jsp コードを作成しているとします。

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

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

  <%=                   
      k                     
  %>

</body>

したがって、サーブレットで 2 つの no の合計を出力する同じコードを作成する場合、おそらく doGet() メソッドでそれを作成します。

エラーが発生する理由は、別のメソッド内でメソッドを定義しているためです (メソッド定義の規則に違反しています)。

したがって、if が新しいメソッドを形成するように、定義タグにメソッドを配置します。

于 2014-02-11T17:49:33.000 に答える