Nell’articolo precedente abbiamo affrontato l’argomento delle Tag Libraries fornendo una descrizione di come si scrive un file.tld e di come si utilizza all’interno di una pagina JSP.
Riguardando il codice del file apogeo.tld:
1.0
1.1
apogeolib
https://www.apogeonline.com/taglib
Esempio di Tag Library
hello
com.apogeo.ciao
empty
Questo è un tag
name
false
true
/
si può notare che viene definito l’unico tag che si chiama hello e che per esso viene definita un’implementazione nella classe com.apogeo.ciao
Ecco scoperto l’arcano: per implementare il tag personalizzato è sufficiente scrivere la classe com.apogeo.ciao il legame tra il tag e la sua implementazione viene descritto all’interno della libreria attraverso l’utilizzo della sezione
com.apogeo.ciao /
Vediamo un esempio di questa implementazione, si tratta del file
WEB-INFclassescomapogeociao.java
/
che ha il seguente contenuto:
package com.apogeo;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;public class ciao extends TagSupport {
private String name=null;public void setName(String value){
name = value;
}public String getName(){
return(name);
}public int doStartTag() {
try {
JspWriter out = pageContext.getOut();
out.println(“”);
if (name != null)
out.println(“Ciao ” + name + “, questa riga è generata dalla Tag Library
“);
else
out.println(“Errore, manca il parametro corretto!”);
}
catch (Exception ex) {
throw new Error(“Errore”);
}
return SKIP_BODY;
}public int doEndTag(){
try {
JspWriter out = pageContext.getOut();
out.println(““);
}
catch (Exception ex){
throw new Error(“Errore”);
}
return 0;
}
}/
Compilandolo si ottiene la classe che ci serve, il file ciao.class.
Pubblicando il tutto sull’application server si ottiene il seguente risultato:
Come si può vedere nella pagina JSP si utilizza un tag proprietario che ha un’implementazione nella classe indicata all’interno del file di definizione della libreria.
In questo modo si ottiene una separazione tra la posizione del tag all’interno della pagina, la sua definizione formale, la sua implementazione e la logica di business che può essere inserita all’interno di beans separati.