2010-09-22 48 views
27

我知道它不是推薦,我應該使用標籤庫等等等等JSP scriptlet中的方法是否合法?

但我還是想知道,如果它是合法的聲明JSP scriplet方法:

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

    String test = doSomething("test"); 

%> 

是那合法?我收到了一些奇怪的編譯錯誤(如a ; is expected),看起來不合適。謝謝。

+0

可能的複製[在JSP中聲明的功能呢?(https://stackoverflow.com/questions/826932/declaring- functions-in-jsp) – 2017-08-29 23:30:12

回答

47

您需要使用聲明語法(<%! ... %>):

<%! 
    public String doSomething(String param) { 
     // 
    } 
%> 
<% 
    String test = doSomething("test"); 
%> 
+4

我想添加http://download.oracle.com/javaee/5/tutorial/doc/bnajq.html – 2010-09-22 12:25:07

14

瞭解JSP的工作:整個JSP是由Tomcat的轉換成Java類。這個Java類不過是Servlet。所以最終你會運行這個servlet。

現在考慮你正在寫一個打印的2號和的JSP代碼,在方法

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

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

    <%=     
     k      
    %> 

</body> 

就這麼過去了,如果你寫的是打印出的2號和相同的代碼在一個servlet中,你可能會在doGet()方法中編寫它。

原因,爲什麼你會得到一個錯誤是你定義的另一種方法中的一個方法(違反的方法定義的規則)。

因此,我們把方法定義標籤,這樣,如果形成一種新的方法

相關問題