Diferencia entre revisiones de «JSTL»

De Dos Ideas.
Saltar a: navegación, buscar
(Más información)
Línea 3: Línea 3:
 
JSTL comienza a ser sumamente útil cuando se combina con un nuevo lenguaje de expresiones para JSP: Expression Language (EL). EL es una nueva sintáxis para referenciar objetos, atributos y crear expresiones lógicas. EL y JSTL en conjunto forman una solución muy simple y poderosa para resolver la presentación en los JSP.
 
JSTL comienza a ser sumamente útil cuando se combina con un nuevo lenguaje de expresiones para JSP: Expression Language (EL). EL es una nueva sintáxis para referenciar objetos, atributos y crear expresiones lógicas. EL y JSTL en conjunto forman una solución muy simple y poderosa para resolver la presentación en los JSP.
  
JSTL es la opción preferida para resolver la presentación en los proyectos web con [[Web Logic]] 9 que tengamos. A continuación una breve introducción.
+
==Una página de ejemplo==
 
+
===El objeto de dominio en el request===
===Una página de ejemplo===
 
==El objeto de dominio en el request==
 
  
 
Para el ejemplo usaremos el siguiente objeto de dominio, que deberemos mostrar en una página.
 
Para el ejemplo usaremos el siguiente objeto de dominio, que deberemos mostrar en una página.
 
+
<pre>
 
     public class Invasor {
 
     public class Invasor {
 
         private Long id;
 
         private Long id;
Línea 19: Línea 17:
 
         //getters y setters a continuación
 
         //getters y setters a continuación
 
     }
 
     }
 +
</pre>
  
 
Para el ejemplo presupondremos que existe una instancia de Invasor subida al request bajo el nombre "invasor Activo".
 
Para el ejemplo presupondremos que existe una instancia de Invasor subida al request bajo el nombre "invasor Activo".
  
==Importando JSTL en la página==
+
===Importando JSTL en la página===
  
 
Para usar JSTL es necesario incluir los siguientes JAR al proyecto:
 
Para usar JSTL es necesario incluir los siguientes JAR al proyecto:
Línea 41: Línea 40:
  
 
     <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 
     <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 
 
     <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>
 
     <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>
  
==EL para referenciar objetos==
+
===EL para referenciar objetos===
  
 
EL permite referenciar atributos y objetos a través de sus nombres de variables. Las expresiones EL cumplen la forma:
 
EL permite referenciar atributos y objetos a través de sus nombres de variables. Las expresiones EL cumplen la forma:
Línea 60: Línea 58:
 
Pero primero deberemos definir nuestra variable "invasor" antes de utilizarla.
 
Pero primero deberemos definir nuestra variable "invasor" antes de utilizarla.
  
==Creando una variable==
+
===Creando una variable===
  
 
Usaremos EL para mostrar los atributos de nuestro invasor. Sin embargo, primero deberemos crear una variable local que contenga una referencia al invsasor en el request. Para esto, usaremos el tag "set" provisto por JSTL:
 
Usaremos EL para mostrar los atributos de nuestro invasor. Sin embargo, primero deberemos crear una variable local que contenga una referencia al invsasor en el request. Para esto, usaremos el tag "set" provisto por JSTL:
Línea 79: Línea 77:
 
     </div>
 
     </div>
  
==Formateando atributos==
+
===Formateando atributos===
  
 
Usando los tags "fmt" podremos darle formato a números y fechas:
 
Usando los tags "fmt" podremos darle formato a números y fechas:
Línea 85: Línea 83:
 
  Reclutado el <fmt:formatDate dateStyle="short" value="${invasor.fechaReclutamiento}"/>
 
  Reclutado el <fmt:formatDate dateStyle="short" value="${invasor.fechaReclutamiento}"/>
  
==Condiciones==
+
===Condiciones===
  
 
Además, es posible crear bloques con condiciones lógicas. Para esto se utiliza el tag "if", el cual ejecuta el bloque que contiene si su condición da verdadero.
 
Además, es posible crear bloques con condiciones lógicas. Para esto se utiliza el tag "if", el cual ejecuta el bloque que contiene si su condición da verdadero.
Línea 118: Línea 116:
 
     </c:forEach>
 
     </c:forEach>
  
==Conclusión==
 
 
JSTL y EL proveen una forma muy simple de resolver la lógica de presentación en los JSP.
 
  
 
==Ver también==
 
==Ver también==

Revisión del 15:37 27 jul 2008

Java Standard Tag Library (JSTL) es un conjunto de tags JSP que resuelven las situaciones más comunes de presentación. JSTL provee tags para setear, obtener y mostrar variables del entorno, iterar colecciones, crear condiciones lógicas y formatear fechas y números, entre otras cosas.

JSTL comienza a ser sumamente útil cuando se combina con un nuevo lenguaje de expresiones para JSP: Expression Language (EL). EL es una nueva sintáxis para referenciar objetos, atributos y crear expresiones lógicas. EL y JSTL en conjunto forman una solución muy simple y poderosa para resolver la presentación en los JSP.

Una página de ejemplo

El objeto de dominio en el request

Para el ejemplo usaremos el siguiente objeto de dominio, que deberemos mostrar en una página.

    public class Invasor {
        private Long id;
        private String nombre;
        private Date fechaReclutamiento;
        private boolean esCapitan;
        private Collection<Nave> naves;

        //getters y setters a continuación
    }

Para el ejemplo presupondremos que existe una instancia de Invasor subida al request bajo el nombre "invasor Activo".

Importando JSTL en la página

Para usar JSTL es necesario incluir los siguientes JAR al proyecto:

  • standard.jar
  • jstl.jar

Estos JAR son solamente necesarios para que los IDE compilen las páginas, y no deben quedar en los distribuibles (ya que el application server los proveerá en tiempo de ejecución).

JSTL está compuesto por un conjunto de tags separados en diferentes TLDs. Los dos grupos de tags principales son:

  • Core (prefijo "c"): funcionalidad básica, como seteo de variables, iteraciones de colecciones, lógica, etc.
  • Format (prefijo "fmt"): utilidades para formateo de fechas y números.

Pueden ver todos los grupos y URIs correspondientes a cada uno en standard.jar/META-INF (allí se encuentran todos los TLD).

Finalmente, para importar estos tags en nuestro JSP quedaría el siguiente código:

   <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>

EL para referenciar objetos

EL permite referenciar atributos y objetos a través de sus nombres de variables. Las expresiones EL cumplen la forma:

   ${expresion}

Por ejemplo, si tuvieramos una variable "invasor" definida, podriamos hacer referencia a su nombre:

   ${invasor.nombre}

O crear una condición lógica:

   ${invasor.esCapitan == false}

Pero primero deberemos definir nuestra variable "invasor" antes de utilizarla.

Creando una variable

Usaremos EL para mostrar los atributos de nuestro invasor. Sin embargo, primero deberemos crear una variable local que contenga una referencia al invsasor en el request. Para esto, usaremos el tag "set" provisto por JSTL:

   <c:set var="invasor" value="${requestScope[['invasorActivo']}"/>

Noten, este tag utiliza EL para hacer referencia al objeto "invasorActivo" del request. La variable "requestScope" es implícita Mostrando atributos

Mostrar atributos en el JSP es tan simple como referenciar a los atributos con EL.

Por ejemplo, supongamos que queremos armar un pequeño HTML para mostrar los datos del Invasor en cuestión:

       ID: ${invasor.id}
       
Nombre: ${invasor.nombre}

Formateando atributos

Usando los tags "fmt" podremos darle formato a números y fechas:

Reclutado el <fmt:formatDate dateStyle="short" value="${invasor.fechaReclutamiento}"/>

Condiciones

Además, es posible crear bloques con condiciones lógicas. Para esto se utiliza el tag "if", el cual ejecuta el bloque que contiene si su condición da verdadero.

   <c:if test="${invasor.esCapitan == true}">
       Este invasor es Capitan de una nave.
   </c:if>
   <c:if test="${persona.esMayorDeEdad == false}">
       Este invasor es un soldado.
   </c:if>

Se pueden crear condiciones múltiples con el tag "choose". Este tag permite evaluar varias condiciones. El mismo bloque anterior reescribo con choose sería:

   <c:choose>
       <c:when test="${invasor.esCapitan}">
           La persona es mayor de edad.
       </c:when>
       <c:otherwise>
           La persona es menor de edad.
       </c:otherwise>
   </c:choose>

Cuando existe más de una rama de decisión, el tag "choose" es mucho más práctico. Iterando colecciones

Los tags "core" traen tambien utilidades para recorrer colecciones facilmente. Recorreremos la colección de naves que tiene el Invasor usando el tag "forEach", y mostraremos su modelo y nombre.

   <c:forEach var="nave" items="${invasor.naves}">
       Modelo: ${nave.modelo}
       Nombre: ${nave.nombre}
       
</c:forEach>


Ver también