2010-09-22 7 views
27

Ich weiß, es ist nicht zu empfehlen, und ich sollte Tag-Bibliotheken verwenden etc etc.Sind Methoden in JSP Scriptlet zulässig?

Aber ich würde noch gerne wissen, ob es legal ist Methoden in einer JSP scriplet zu erklären:

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

    String test = doSomething("test"); 

%> 

Ist das legal? Ich bekomme einige komische Kompilierungsfehler (wie a ; is expected), die nicht zu passen scheinen. Vielen Dank.

+0

Mögliche Duplikat [Deklarieren von Funktionen in JSP?] (Https://stackoverflow.com/questions/826932/declaring- Funktionen-in-jsp) –

Antwort

47

Sie müssen Deklarationssyntax verwenden (<%! ... %>):

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

Ich möchte http://download.oracle.com/javaee/5/tutorial/doc/bnajq.html hinzufügen –

14

Verstehen Sie die Bearbeitung von jsp: Die gesamte JSP zu einer Java-Klasse von Tomcat umgewandelt wird. Diese Java-Klasse ist nichts anderes als das Servlet. Das Servlet wird also am Ende ausgeführt.

Jetzt betrachten, dass Sie einen JSP-Code schreiben, der die Summe von 2 nos druckt, in eine Methode übergeben

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

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

    <%=     
     k      
    %> 

</body> 

Also, wenn Sie den gleichen Code schreiben waren, die Summe von 2 nos ausdruckt In einem Servlet würden Sie das wahrscheinlich in der Methode doGet() schreiben.

Die Grund warum Sie einen Fehler erhalten würden, wenn Sie eine Methode innerhalb einer anderen Methode definieren (die gegen die Regel der Methodendefinitionen verstößt).

Daher setzen wir die Methode in der Definition-Tag so, dass, wenn bildet eine neue Methode