Wykorzystanie funkcji Expression Language w JSP
5 years, 9 months ago

Kiedy potrzebujesz silniejszego wsparcia ze strony JSP, powiedzmy metody Javy, ale nie chcesz stosować w kodzie swojej strony JSP elementów skryptowych, z pomocą mogą Ci przyjść funkcje języka EL. EL (Expression Language) to język skryptowy, który pozwala wywołać komponenty Javy (tj. komponenty JavaBeans) z poziomu strony JSP. Oprócz komponentów możliwe jest również wywoływanie zwykłych funkcji Javy. Poniższy artykuł opisuje sposób zastosowania tej ostatniej możliwości.

Funkcje języka EL umożliwiają nam napisanie prostego wyrażenia, które w kodzie strony wywoła statyczną metodę przygotowanej wcześniej tradycyjnej klasy Javy. Aby wszystko zaczęło działać potrzebujemy trzech elementów:

    • statycznej metody Javy
    • deskryptora TLD
    • odpowiedniego wyrażenia EL na stronie JSP

Statyczna metoda Javy

To zwykła publiczna i statyczna metoda umieszczona w tradycyjnej klasie Javy. Naszą klasę możemy umieścić w dowolnym pakiecie. Przykładowa klasa:

public class FunkcjeEL{
       public static int zwrocWartosc(){
               return (int)((Math.random() * 6) + 2);
       }
}

Deskryptor TLD

W przypadku funkcji języka wyrażeń EL deskryptor TLD (Tag Library Descriptor) zapewnia niezbędne odwzorowanie pomiędzy klasą Javy (definiującą funkcję) a stroną JSP (która wywołuje funkcję). Dzięki temu nazwa funkcji i rzeczywista nazwa metody nie muszą być takie same. Przykład odwzorowania metody statycznej w deskryptorze TLD:

<xml version="1.0" encoding="ISO-8859-1">
     <taglib ....>
          <tlib-version>1.2<tlib-version>
          <uri>MojeFunkcje</uri>
          <function>
               <name>wartosc</name>
               <function-class>com.FunkcjeEL</function-class>
               <function-signature>int zwrocWartosc()</function-signature> 
          </function> 
     </taglib>
</xml>

Deskryptor TLD (.tld) może posiadać dowolną nazwę a umieszczamy go w katalogu WEB-INF lub w jednym z jego podkatalogów; w przypadku umieszczania w archiwum JAR, należy go zapisać w katalogu META-INF lub w jednym z jego podkatalogów

Kod strony JSP

Zanim napiszemy nasze wyrażenie EL wywołujące odpowiednią funkcję, musimy skorzystać z dyrektywy taglib wskazującej na odpowiedni deskryptor TLD. Atrybut "uri" dyrektywy taglib określa na potrzeby kontenera nazwę deskryptora TLD (odpowiada ona wartości elementu "uri" w deskryptorze). Atrybut "prefix" definiuje przedrostek jakiego będziemy używać na stronie JSP do wywołania funkcji z biblioteki: 

<%@ taglib uri="MojeFunkcje" prefix="moje" %>
<html>
<body>
     ${moje:wartosc()}
</body>
</html>

 

Joanna Dzikowska
Comments
22
RSS Google+ Facebook Twitter LinkedIn
Lucid Mailer
Effective email marketing: newsletters, bulletins,
mailing campaigns
Lucid CRM
Customer relationship management, internal communication, individual sale
Lucid Sale
Sales assistant with custom-made
e-commerce platforms
Lucid Assistance
Post-Sales support for customers and troubleshooting solutions
Lucid Panel
Software for remote administration of
dedicated servers
Copyright © 2002-2012 Spacja.com