Abbiamo già detto che le viste in Struts sono caratterizzate da pagine Jsp. In questo capitolo esamineremo i vantaggi dell'impiego delle librerie di tag nelle View di Struts. Vedremo i tag più importanti e le loro funzionalità.
Chi conosce linguaggi di markup come XML, ha già confidenza con il concetto di tag, qui ricordiamo solo la distinzione tra tag "contenitori" e non.
I tag "senza contenuto" sono quelli che non contengono altri tag, essi specificano l'informazione servendosi solo degli attributi. Sono spesso impiegati per semplici azioni. Un esempio potrebbe essere quello delle immagini in HTML:
<img src="percorso-immagine" />
Gli elementi contenitori invece racchiudono altri elementi o un contenuto tra i tag di apertura e chiusura. L'esempio è quello del paragrafo in HTML:
<p style="text-align:right">Testo allineato a destra</p>
Jsp Custom Tag
Nelle pagine Jsp, oltre al classico markup elaborato direttamente dal browser, è possibile utilizzare il meccanismo dei Custom Tag, ovvero elementi di markup speciali che vengono interpretati dalla nostra applicazione e che, ad esempio, servono a generare automaticamente interi pezzi di markup HTML.
Il rendering e i comportamenti di questi componenti sono affidati ad una specifica classe Java detta tag handler. L'handler ha accesso a tutte le risorse della Jsp che ospita i componenti (oggetti session
, request
, response
e pageContext
).
Struts mette a disposizione molti tag personalizzati, raggruppati in cinque librerie:
- Html
- Bean
- Logic
- Nested
- Template
Le prime versioni di Struts contenevano anche una sesta libreria di tag chiamata form
inclusa poi nella libreria Html
.
Utilizzare una taglib
Per usare le taglib bisogna includere il Tag Library Descriptor (TLD) per ciascuna libreria, che contiene le definizioni di tutti i tag della libreria.
Possiamo farlo grazie alla direttiva <%@taglib%> che ha questa sintassi:
<%@ taglib uri="/WEB-INF/nome_libreria.tld" prefix="prefisso" %>
Dove con l'attributo uri
indichiamo il path del file .tld
e con prefix
indichiamo all'application server che dovrà occuparsi di elaborare tutti i tag che iniziano per "prefisso
".
Ad esempio, de vogliamo utilizzare le librerie Html
e Bean
in una pagina Jsp, inseriamo le seguenti direttive all'inizio della pagina:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
Possiamo trovare un altro semplice esempio qui.
Nelle lezioni successive vedremo nel dettaglio le librerie e i principali tag che li compongono. Per un riferimento esaustivo su tutti i tag delle librerie di Struts è possibile consultare i javadocs nella sezione taglib.