26
2005
Utilizar Expresion Language con Struts
Supongo que no me habrá pasado a mí solo, pero me ha llevado algún tiempo y sus correspondientes quebraderos de cabeza, descubrir cómo se utiliza el Lenguaje de Expresión con Struts.
Si tuviéramos un .jsp que recorre una lista de libros almacenada en el request, el código con EL sería el siguiente:
<c:forEach var=”fila” items=”${sessionScope.seleccion}”>
<tr>
<td>${fila.value.id_libro}</td>
<td>${fila.value.titulo_libro}</td>
<td>${fila.value.nom_autor}</td>
<td>${fila.value.nom_editorial}</td>
<td>${fila.value.ed_libro}</td>
<td>${fila.value.anyo_libro}</td>
<td>${fila.value.precio_libro}</td>
</tr>
</c:forEach>
Y si no configuramos las páginas para utilizar LE, lo que se vería en un navegador serían las expresiones en lugar de sus valores:
${fila.value.precio_libro}${libro.id_libro} ${libro.titulo_libro} ${libro.nom_autor} ${libro.nom_editorial} ${libro.ed_libro} ${libro.anyo_libro} ${libro.precio_libro}
El problema aparece cuando intentamos utilizar EL con las versiones 1.2.x de Struts y anteriores, ya que éstas utilizan por defecto la versión 2.2 del descriptor de despliegue web.xml:
<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN”
“http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”>
Una forma de solucionarlos sería cambiar a la versión 2.3, pero también tendríamos que cambiar otras cosas como el orden de las etiquetas en el archivo web.xml y algunas cosillas más.
Si queremos continuar con la versión 2.2, la solución es añadir el atributo isELIgnored=”false” en la directiva page de los jsp donde queramos utilizar EL, tal como se puede ver en el ejemplo
<%@ page language=”java” contentType=”text/html; charset=ISO-8859-1″
pageEncoding=”ISO-8859-1″ isELIgnored=”false”%>
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=ISO-8859-1″>
<title>Probando LE</title>
</head>
<body>
<table>
<c:forEach var=”fila” items=”${sessionScope.seleccion}”>
<tr>
<td>${fila.value.id_libro}</td>
<td>${fila.value.titulo_libro}</td>
<td>${fila.value.nom_autor}</td>
<td>${fila.value.nom_editorial}</td>
<td>${fila.value.ed_libro}</td>
<td>${fila.value.anyo_libro}</td>
<td>${fila.value.precio_libro}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Otro problema que podemos tener es cuando intentamos introducir una expresión EL dentro de una etiqueta de struts, como <logic:iterate>.Para evitarlo tendremos que hacer lo siguiente:
- Las etiquetas de struts en las que se pueden incluir este tipo de expresiones pertenecen a los tld que acaban en -el: struts-html-el.tld, struts-logic-el, etc. Estos archivos tld están en la distribución de struts, en la carpeta struts.1.2.x/contrib/struts-el/lib.
Así que tendremos que modificar el archivo web.xml para que se utilicen estos tlds. - Además deberemos añadir al build path de nuestro proyecto, el archivo struts-el.jar que también está en dicha carpeta.
- Por último, esto no funciona si nos olvidamos de incluir en el build path, los archivos jstl.jar y standar.jar del JSTL.
En el IDE Eclipse, todo esto es relativamente sencillo ya que sólamente tendremos que copiar los archivos .jar a la carpeta WEB-INF/lib de nuestro proyecto y los .tld a la carpeta WEB-INF.
Últimos comentarios
- Merce en Error al instalar Prestashop: No encuentra el archivo config/config.inc.php
- iok en Truco: Preloader de página con jQuery sin plugin
- iok en Truco: Preloader de página con jQuery sin plugin
- Patagonia en Truco: Preloader de página con jQuery sin plugin
- Antuan en Diseños para el nuevo Timeline de facebook
Etiquetas
Archivos
- Mayo 2012
- Abril 2012
- Marzo 2012
- Febrero 2012
- Octubre 2011
- Septiembre 2011
- Junio 2011
- Mayo 2011
- Abril 2011
- Marzo 2011
- Octubre 2010
- Junio 2010
- Marzo 2010
- Febrero 2010
- Enero 2010
- Diciembre 2009
- Julio 2009
- Junio 2009
- Mayo 2009
- Marzo 2009
- Febrero 2009
- Enero 2009
- Noviembre 2007
- Julio 2007
- Abril 2007
- Marzo 2007
- Enero 2007
- Septiembre 2006
- Abril 2006
- Noviembre 2005
- Octubre 2005
- Marzo 2005

Escrito por Pablo García