Un sucinto resumen a modo de chuleta de JSTL 1.2

Taglibs disponibles con la libreria:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

I18N, configuración del bundle por defecto:

<web-app>
...
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>com.acme.MyResources</param-value>
  </context-param>
...
</web-app>

Tags (usos habituales):

<c:out value=”value” [escapeXml=”{true|false}”]
	[default=”defaultValue”] /> 
<c:set value=”value” var=”varName” 
	[scope=”{page|request|session|application}”]/>
<c:remove var=”varName” [scope=”{page|request|session|application}”]/>
<c:redirect url="http://acme.com/register"/>
<c:import url=”url” [context=”context”]
  [var=”varName”] [scope=”{page|request|session|application}”]
  [charEncoding=”charEncoding”]>
<c:url value=”value” [context=”context”]
  [var=”varName”] [scope=”{page|request|session|application}”]/>
<c:if test=”cond” [var=”varName”]
	[scope=”{page|request|session|application}”]>
   body content
</c:if>
<fmt:message key="greeting"/>
<fmt:setLocale value=”en_US” />
<fmt:formatNumber value="123456.7891" pattern="#,#00.0#"/>
<fmt:formatDate value=”${now}” pattern="dd.MM.yy"/>

En el caso del <c:forEach> podemos iterar sobre:

  • java.util.Collection (incluye List y Set)
  • java.util.Map
  • Arrays
  • java.util.Iterator
  • java.util.Enumeration

La sintaxis:

<c:forEach [var=”varName”] items=”collection”
   [varStatus=”varStatusName”]
   [begin=”begin”] [end=”end”] [step=”step”]>

Y su tag compañero <c:forTokens> que permite iterar sobre un String, utilizando StringTokenizer con los delimitadores indicados.

La sintaxis:

<c:forTokens items="stringOfTokens" delims="delimiters"
  [var="varName"]
  [varStatus="varStatusName"]
  [begin="begin"] [end="end"] [step="step"]>

Finalmente un listado de las funciones incorporadas en JSTL.

  • length: longitud de cualquier cosa que podamos usar en un <c:forEach>
  • toLowerCase, toUpperCase
  • substring, substringAfter, substringBefore
  • trim
  • replace
  • indexOf, startsWith, endsWith, contains, containsIgnoreCase
  • split, join
  • escapeXml