INTERFETE 2 WEB

Framework paginare J2EE : DisplayTag


by  Iulian


 

Displaytag este o librarie de taguri jsp ce permite crearea rapida de paginare in genul celei de rezultate de la Google cu efort minim.

 

De ce ?  

Permite generarea codului de tabel atat de banal si repetitiv din cateva tag-uri foarte puternice. Se integreaza foarte usor  in orice pagina jsp; aplicarea stilurilor se face transparent. Permite sortarea dupa o anumita coloana folosind toate datele disponibile sau numai cele afisate la un moment dat. Permite export-ul in diferite formate, din cateva linii de cod (pdf,xml,csv).

 

De unde incep? 

 

  1. Descarca ultima versiune de aici.

 

2)Apoi descarca dependintele de aici :

 

        commons-logging

        commons-lang

        commons-collections

        commons-beanutils

        log4j

        itext (optional, for pdf/rtf export).

3)Fa o pagina jsp simpla: 

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %> 

<html> 

<head> 

<title>Test display tag</title> 

</head> 

<body> 

<%  

 

// creez o lista de obiecte de tip User 

java.util.List<interfete.web.ro.User> useri = new java.util.ArrayList<interfete.web.ro.User> ();  

 

useri.add(new interfete.web.ro.User (“Gigi”, 20)); 

useri.add(new interfete.web.ro.User (“Ion”, 10)); 

useri.add(new interfete.web.ro.User (“Andi”, 25)); 

 

//pun pe request lista 

request.setAttribute( "test", useri ); %> 

 

<!-- displaytag stie sa caute obiectul in request --> 

<display:table name="test" />

 

</body> 

</html> 

Am presupus ca  exista clasa interfete.web.ro.User cu proprietatile String name si Integer age, completate in constructor.

 

Display:table va gasi lista in reuqest si va parcurge pe rand fiecare element al listei si pentru fiecare proprietate va genera un <td>, fiecare obiect al listei fiind un <tr>. 

 

Optiuni mai avansate permit generarea unor mesaje custom in loc de afisarea directa a unei proprietati: 

 

<display:table name=”test”> 

<display:column title="name"><%=test.getName();%></display:column> 

</display:table> 

 

Aici am generat numai o coloana al carei continut nu e calculat automat ci e facut custom de mine folosind scriplet Java. De observat ca displaytag creeazain contextul paginii o variabila name de tipul obiectelor din lista. Pentru asta foloseste ReflectionAPI din Java. 

 

Pentru a avea un mai mare control asupra rezultatului generat de displaytag se pot fixa proprietati in fisierul displaytag.properties ce trebuie sa fie existent in classpath. 

Un exemplu elocvent este integrarea usoara cu serviciile de localizare existente in aplicatia web. Totodata se pot configura usor mesajele si optiunile de export, inclusiv ce se vrea sa fie vizibile in documentul exportat: 

 

displaytag.properties 

 

export.[mymedia]=true 

 

export.[mymedia].class=fully.qualified.class.name 

 

export.[mymedia].label=Click here to try my export 

 

# include header parameter is forwarded to your export view 

export.[mymedia].include_header=true 

 

# if set, file is downloaded instead of opened in the browser window 

export.[mymedia].filename= 

unde mymedia poate fi 

        - CSV, cu clasa org.displaytag.export.CsvView

        - Excel,org.displaytag.export.ExcelView

        - XML, org.displaytag.export.XmlView

        - PDF, org.displaytag.export.PdfView

O greseala tipica pentru incepatori si foarte greu de debug-at este momentul in care din cauza include-urilor din jsp-uri, sau a folosirii Struts Tiles, apare eroare la procesarea raspunsului; se apeleaza flush() pe raspunsul catre client inainte de procesarea displaytag-ului. Pentru a se evita aceste cazuri se foloseste un filtru de export, configurat in web.xml:

 

  <filter>

    <filter-name>ResponseOverrideFilter</filter-name>

    <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>

  </filter>

 

  <filter-mapping>

    <filter-name>ResponseOverrideFilter</filter-name>

    <url-pattern>*.do</url-pattern>

  </filter-mapping>

  <filter-mapping>

    <filter-name>ResponseOverrideFilter</filter-name>

    <url-pattern>*.jsp</url-pattern>

  </filter-mapping>

Jocuri
Free Web Hosting