Foros del Web » Programación para mayores de 30 ;) » Java »

[taglibs] - forEach() no funciona! Intenté de todo.

Estas en el tema de [taglibs] - forEach() no funciona! Intenté de todo. en el foro de Java en Foros del Web. Que tal. Tengo el siguiente jsp, en el cual no funciona el foreach(): Código HTML: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page ...
  #1 (permalink)  
Antiguo 29/12/2010, 12:52
 
Fecha de Ingreso: diciembre-2010
Ubicación: La Plata, Buenos Aires
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
[taglibs] - forEach() no funciona! Intenté de todo.

Que tal. Tengo el siguiente jsp, en el cual no funciona el foreach():

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="java.util.List"%>
<%@page import="com.globant.clases.Pelicula"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Listado de actores</title>
<script language="JavaScript">
    function borrar(idSeleccionado) {
    document.getElementById("act_id").value = idSeleccionado;
    document.forms[0].submit();
    }
</script>
<link rel="stylesheet" href="miestilo.css">
</head>
<body>


<TABLE WIDTH='100' HEIGHT='100' BORDER='1'>
    <thead>
        <tr>
            <th>IDENTIFICADOR</th>
            <th>NOMBRE</th>
            <th>APELLIDO</th>
        </tr>
    </thead>

    <tfoot>

        <c:forEach items="${listadoActores}" var="actor">
            <tr>
                <c:set var="id"  value="${actor.actor_id}" />
                <td><c:out  value="${id}" /></td>
                <td><c:out value="${actor.nombre}" /></td>
                <td><c:out value="${actor.apellido}" /></td>
                <td><input type="button" name="borrar" value="borrar" onclick="borrar(<c:out value="${pelicula.idPelicula}" />);"></td>
            </tr>
        </c:forEach>
        
    </tfoot>
</table>

</body> 

En pantalla no se imprimen los valores de los campos, sino el codigo correspondiente:

${id} ${actor.nombre} ${actor.apellido}

Ademas no itera.

Estoy usando el Tomcat 6.0.
Ya puse el jar javaee-api dentro de WEB-INF\lib, y los jar standard, servlet-api, jstl-1.2 dentro de C:\apache-tomcat-6.0.29\lib

Intenté con varios URIs para el taglib:
uri="http://java.sun.com/jstl/core"
uri="http://java.sun.com/jstl/core_rt"
uri="http://java.sun.com/jsp/jstl/core"

Este es mi pom:

Código HTML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.globant.ejemplo</groupId>
	<artifactId>peliculasWeb</artifactId>
	<packaging>war</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>peliculas web</name>
	<url>http://maven.apache.org</url>
	  
	<repositories>
		<repository>
 		<id>Java.Net</id>
  		<url>http://download.java.net/maven/2/</url>
		</repository>
	</repositories>

	<dependencies>
	
		<dependency>
    	                <groupId>javax</groupId>
    	                <artifactId>javaee-api</artifactId>
    	                <version>6.0</version>
		</dependency>
		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>

		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.0.8</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-eclipse-plugin</artifactId>
				<configuration>
					<wtpversion>2.0</wtpversion>
				</configuration>
			</plugin>
		</plugins>
		<finalName>Tus Peliculas</finalName>
	</build>
</project> 
Supongo que el problema está en la compatibilidad de las distintas versiones de las dependencias, es decir, quizá al usar el Tomcat 6.0 me convendría ciertas versiones de las dependencias en particular. En fin, intenté con varias soluciones que fuí encontrando en distintos foros pero ninguna dió resultado.

Si alguien tiene alguna idea seria genial. Desde ya gracias.

Steph.
  #2 (permalink)  
Antiguo 30/12/2010, 02:16
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: [taglibs] - forEach() no funciona! Intenté de todo.

Inténtalo así
<%--Nota: sería así realmente ...requestScope.objetoContenedor_mayor.objetoConte nido_mayor....objetoContenidoMenor --%>
<c:forEach items="${requestScope.listadoActores}" var="actor"> <%-- a veces se usa varStatus pero creo que vale var --%>
<tr>
<c:set var="id" value="${actor.actor_id}" scope="page"/>
<td><c:out value="${actor.id}" /></td> <%-- sería actor.nombreVariable.name --%>
<td><c:out value="${actor.nombre}" /></td>
<td><c:out value="${actor.apellido}" /></td>
<td><input type="button" name="borrar" value="borrar" onclick="borrar(<c:out value="${pelicula.idPelicula}" />);"></td> <%-- tendrías que recuperar correctamente la película --%>
</tr>
</c:forEach>
  #3 (permalink)  
Antiguo 30/12/2010, 11:49
 
Fecha de Ingreso: diciembre-2010
Ubicación: La Plata, Buenos Aires
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: [taglibs] - forEach() no funciona! Intenté de todo.

He probado tu código pero no funcionó, sigue sin iterar y sin imprimir los resultados. Gracias de todas formas!

Nota: el "listadoActores" se lo envía un servlet a la jsp, digamos, lo aloja en el request.

List<Actor> listadoActores = service.mostrarActores();
request.setAttribute("listadoActores", listadoActores);
RequestDispatcher req = request.getRequestDispatcher("/mostrarActores.jsp");
req.forward(request, response);


Quizá sea un problema de ambiente mas que de código, alguna otra idea?

Última edición por stephanie_prez; 30/12/2010 a las 11:55 Razón: mas info.
  #4 (permalink)  
Antiguo 05/01/2011, 09:24
 
Fecha de Ingreso: diciembre-2010
Ubicación: La Plata, Buenos Aires
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: [taglibs] - forEach() no funciona! Intenté de todo.

Finalmente lo solucioné. No del todo, pero es algo;

Utilizé el URI <%@ taglib uri='http://java.sun.com/jstl/core' prefix='c' %>, y aunque me marca todos los taglibs en amarillo, con el error "invalid attribute (nombreAtributo)" de todas formas mi código funciona.

Salutes!

Etiquetas: foreach, jstl, taglib, uri
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:19.