JSP. 11 Librería core


Para importar este conjunto de etiquetas:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

Esta librería implementa acciones de propósito general, como mostrar información, crear y modificar variables de distinto ámbito y tratar excepciones. Etiquetas más comunes:

Etiqueta out

Muestra información en la página, se muestra la expresión contenida en el atributo value. Es equivalente a <%= variable >, pero para expresiones.

Ejemplo:
<c:out value="Hola desde JSP" />
<br /><c:out value="1+2+3" />
<br /><c:out value="${1+2+3}" />
<br /><c:out value="${param.btnEtiquetas}" />
<br /><c:out value="${sessionScope.user}" />

Etiqueta set

Guarda información en una variable y en un determinado ámbito, su atributos son:
Atributo
Descripción
var
Nombre de la variable.
scope
Ámbito de la variable, admite los valores page, session y application

Para eliminar una variable podemos usar:
<c:remove var="nombreVariable" scope="ambitoVariable"/>

Ejemplo:
<c:set var="hola" value="Hola Mundo" />
hola vale:
<c:out value="${hola}" />
<br />
Eliminar hola
<c:remove var="hola"/>
Valor de Hola:
<c:out value="${hola}" />
<br />

Etiqueta if

Etiqueta para condiciones simples, evalúa si una determinada condición es cierta. La condición se indica en el atributo test.

Ejemplo:
<c:if test="${empty hola}">
   hola está vacía
<
/c:if>

Etiqueta choose, when y otherwise

Etiqueta para condiciones múltiples, cada etiqueta when evalúa la condición definida en el atributo test. Si ninguna de las condiciones se cumple, se procesa el cuerpo de otherwise en caso de que aparezca.

Ejemplo:
<c:choose>
  
<c:when test="${hijos == 1}">
      Hijo único.
  
</c:when>
  
<c:when test="${ hijos >= 2 && hijos <=3}">
      Familia Normal.
  
</c:when>
  
<c:when test="${ hijos >= 4}">
      Familia numerosa.
  
</c:when>
  
<c:otherwise>
      Sin hijos.
  
</c:otherwise>
</c:choose>

Etiqueta forEach y forTokens

forEach es una etiqueta básica de iteración, consta de los siguientes atributos:
Atributo
Descripción
items
Colección sobre la que iterar.
var
Nombre de la variable donde se guardará el elemento en curso.
varStatus
Nombre de la variable donde se guardará el estado de la iteración.

En cada iteración, la variable indicada en var irá tomando el valor del elemento de la iteración. A través de la variable indicada en varStatus podemos acceder a las siguientes propiedades:
Atributo
Descripción
index
Posición del elemento en curso (comienza con 0).
count
Número de iteraciones (comienza con 1).
first
Valor booleano que indica si es la primera iteración.
last
Valor booleano que indica si es la última iteración.

forTokens permite iterar sobre una cadena tantas veces como indique un carácter delimitador que la cadena posea. Sus atributos son:
Atributo
Descripción
items
Nombre de la variable donde se guardará el fragmento en curso.
delims
Cadena con todos los caracteres que actúan como delimitador.
varStatus
Nombre de la variable donde se guardará el estado de la iteración.

Ejemplo:
forEach header:<br />
<c:forEach items="${header}" var="cabecera">
   ${cabecera}


</c:forEach>
<br />
forEach cadenas:
<br />
<%
  String[] cadenas = {
"uno", "dos", "tres"};
  pageContext.setAttribute(
"cadenas", cadenas);
%>
<c:forEach items="${pageScope.cadenas}" var="cadena">
   ${cadena}
</c:forEach>
<br />
forEach param:
<br />
<c:forEach items="${param}" var="myParam">
   Nombre: ${myParam.key}
   Valor: ${myParam.value}
  
<br />
</c:forEach>
<br />
<h4>forTokens</h4>
<c:forTokens items="cero,uno,dos,tres,cuatro,cinco" var="token" varStatus="cont" delims=",">
  
<c:out value="${cont.index} - ${token}" /><br />
</c:forTokens>

El resultado sería:
forEach header:
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@2ed4600e
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@f38e5612
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@af400a64
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@d1c47ede
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@2fd98a7d
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@30f5a8
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@bc7b26ba
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@ab27b508
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@1cfcfe83
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@40acd92d
javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry@f6062478

forEach cadenas:
uno dos tres
forEach param:
Nombre: btnEtiquetas Valor: Etiquetas
forTokens
0 - cero
1 - uno
2 - dos
3 - tres
4 - cuatro
5 - cinco

Etiqueta redirect

Redirige a la dirección especificada en su atributo url, y aborta el procesamiento de la página actual.

Ejemplo:
<c:redirect url="login.jsp"/>

Control de errores con catch

Con podemos capturar excepciones sin que se aborte la ejecución de la página al producirse un error. En el atributo var indicamos el nombre de la variable donde debe guardarse la información de la excepción, podremos saber que se ha producido un error comprobando que el valor de esta variable no sea nulo.

Ejemplo:
<c:set var="parametro" value="aaaa" />
<c:catch var="error">
   <%=Integer.
parseInt(request.getParameter("parametro"))%></c:catch>
<c:if test="${not empty error}">
   Se produjo un error: ${error} 

</c:if>

El resultado sería:
Se produjo un error: java.lang.NumberFormatException: null

Comentarios

Entradas populares de este blog

Java. Texto de colores en la consola

javax.swing.JPasswordField

javax.swing.JList