JSTL - Java Server Pages Standard Tag Library: Esempi d'uso

Programmazione - Java Visite: 13607

Emmegi Arts java newsJSTL - Java Server Pages Standard Tag Library: Esempi d'uso

In questa breve guida, vedremo qualche esempio su come usare la libreria java JSTL e vedremo come si possono usare i suoi tag.

AGGIORNAMENTI

20/09/2013 importazione del tag fmt

15/03/2013 c:out e Render html into a JSP page

 

 

In una pagina HTML, oltre ai tag propri del linguaggio, ne esistono di altri legati alla tacnologia Java JSP, conosciuti come JSTL.
Rappresentano dei tag personalizzati che hanno molte potenzialità. Il codice relativo ad un tag di questo tipo dove sta?
Il codice risiede in una classe Java chiamata tag handler.
Ma che vantaggi ci sono nell'uso di questi tag invece del solito codice java inserito nella pagina JSP?
Vediamone alcuni vantaggi:
- la pagina JSP risulta più leggibile e snella
- i tag sono riusabile

 
Il consiglio è di usare almeno le JSP in versione 1.2.
Per usare questi tag la prima cosa da fare è importare la libreria nel codice (ad esempio la libreria jstl-1.1.2.jar) e la seconda cosa è di specificare nella pagina JSP quale libreria deve essere usata (una sorta di import!).


 

IMPORTAZIONE LIBRERIE

Per importare il tag c. form e fn bisogna importare le seguenti librerie:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
 
 

TAG C:IF

Vediamo come usare il tag c:if nelle sue possibili accezioni:
<c:if test="${not empty nome}">
<c:if test="${empty nome}">
<c:if test="${allowCreate==true}">
<c:if test="${allowCreate eq 'true'}">
<c:if test="${allowCreate!=true}">
<c:if test="${status.value}">checked</c:if>>
<c:if test="${!status.first}"><br/></c:if>
<c:if test="${dataInizio!=null}">
<c:if test="${error ne null}">
<c:if test="${not empty nome && cognomi==0}">
<c:if test="${nome == 'ROSSI'}"><spring:message code="nome"/></c:if>
<c:if test="${currentStation!=null && currentStation == flowstation.labelKey}">
<c:if test="${fn:length(currentDescrizione) >= 50}">...</c:if></a>
 
 

TAG FORM:TEXTAREA

Vediamo ora qualche esempio sul form:textarea:

<form:textarea path="nota" rows="4" cols="40"/>
<form:textarea path="${persona.nota}" rows="4" cols="40"/>
<form:textarea rows="8" cols="49" id="descrizione" path="descrizione" disabled="true" />

 

 

TAG C:FOREACH

Vediamo ora come usare il foreach:
<c:forEach items="${note}" var="nota" varStatus="row">
<form:textarea path="note[${row.index}].descrizione" rows="4" cols="40"/>
</c:foreach>
 
Un altro esempio con dentro una checkbox:
<c:forEach items="${miaLista}" var="item" varStatus="status">                    
   <spring:bind path="miaLista[${status.count - 1}].seleziona">
      <input type="hidden" value="false" name="_${status.expression}" />
      <input type="checkbox" name="<c:out value="${status.expression}"/>" value="true" <c:if test="${status.value}">checked</c:if>/>                                    
   </spring:bind>                                               

</c:foreach>
 
 

TAG FMT:FORMATDATE

Vediamo ora il tag fmt per formattare una data direttamente nella pagina JSP:
<fmt:formatDate value="${data}" pattern="dd/MM/yyyy HH:mm"/>
 
 

TAG C:OUT

Vediamo ora il tag c:out utile per visualizzare a video un determinato valore contenuto in una variabile:
<c:out value="${mia_variabile}" escapeXml="false" />
 
Normalmente l'attributo escapeXml vale true. Se, come nel nostro esempio, lo si setta a false allora il contenuto della variabile viene mantenuto così com'è. Quindi se contiene del testo formattato in HTML si vedrà correttamente, ovvero è utilissimo per renderizzare html in una pagina JSP.
 

APPROFONDIMENTI

Per maggiori approfondimenti potete leggere il seguente articolo "La Java Server Pages Standard Tag Library" su Mokabyte qui.
Oppure, consultare la URL principale per le JSTL http://java.sun.com/products/jsp/jstl/.
 
Buon lavoro!