2010-09-22 13 views
27

Je sais que ce ne est pas recommandé, et je devrais utiliser des bibliothèques de balises etc etcLes méthodes sont-elles légales dans le scriptlet JSP?

Mais je voudrais encore savoir s'il est légal de déclarer des méthodes dans une JSP scriplet:

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

    String test = doSomething("test"); 

%> 

Est C'est légal? Je reçois quelques erreurs de compilation bizarres (comme a ; is expected) qui ne semblent pas correspondre. Merci.

+0

double possible de [fonctions Déclarant en JSP?] (Https://stackoverflow.com/questions/826932/declaring- functions-in-jsp) –

Répondre

47

Vous devez utiliser la syntaxe de déclaration (<%! ... %>):

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

Je voudrais ajouter http://download.oracle.com/javaee/5/tutorial/doc/bnajq.html –

14

Comprendre le fonctionnement de jsp: L'ensemble de JSP est convertie en une classe Java par Tomcat. Cette classe Java n'est rien d'autre que le servlet. C'est donc la servlet que vous utiliserez à la fin.

maintenant considèrent que vous écrivez un code Jsp qui imprime la somme de 2 nos, passé dans une méthode

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

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

    <%=     
     k      
    %> 

</body> 

Donc, si vous deviez écrire le même code qui imprime la somme de 2 nos dans une servlet, vous écririez probablement cela dans la méthode doGet().

Le raison pourquoi vous obtiendriez une erreur est que vous définissez une méthode dans une autre méthode (qui viole la règle de définitions de la méthode).

Par conséquent, nous mettre la méthode dans la balise de définition de sorte que si une forme nouvelle méthode