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

[SOLUCIONADO] Iteración en jsp extraña

Estas en el tema de Iteración en jsp extraña en el foro de Java en Foros del Web. Hola a todos. estoy teniendo un problema con el tag <c:forEch, ya que se está comportando de manera un tanto inesperada, ya he buscado e ...
  #1 (permalink)  
Antiguo 06/11/2016, 15:30
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 13 años, 4 meses
Puntos: 46
Iteración en jsp extraña

Hola a todos.

estoy teniendo un problema con el tag <c:forEch, ya que se está comportando de manera un tanto inesperada, ya he buscado e intentado corregirlo pero no logro encontrar una solución, primero les platico un poco de lo que tengo y despues lo que ocurre.

Desde el controlador estoy cargando esta lista:
Código Java:
Ver original
  1. public List<VacacionesPO> historicoDummy(){
  2.     List<VacacionesPO> lst = new ArrayList<VacacionesPO>();
  3.     VacacionesPO item = null;
  4.     for(Integer i = 0; i < 10; i++){
  5.         item = new VacacionesPO();
  6.         item.setPernr(i.toString());
  7.         item.setPnalt(i.toString());
  8.         item.setBukrs(i.toString());
  9.         item.setInivac(i.toString());
  10.         item.setFinvac(i.toString());
  11.         item.setNumcon(i.toString());
  12.         item.setPeriod(i.toString());
  13.         item.setAnoper(i.toString());
  14.         item.setVacdia(i.toString());
  15.         lst.add(item);
  16.     }
  17.     return lst;
  18. }
La clase VacacionesPO está definida así (getters y setter fueron omitidos):
Código Java:
Ver original
  1. public class VacacionesPO {
  2.         public String pernr;
  3.         public String pnalt;
  4.         public String bukrs;
  5.         public String inivac;
  6.         public String finvac;
  7.         public String numcon;
  8.         public String period;
  9.         public String anoper;
  10.         public String vacdia;
  11. }

En mi jsp tengo esto:

Código HTML:
Ver original
  1. <table border="1" width="100%">
  2.     <thead>
  3.         <tr>
  4.             <th>Número SAP</th>
  5.             <th>Número AS400</th>
  6.             <th>Sociedad</th>
  7.             <th>Inicio validez</th>
  8.             <th>Fin validez</th>
  9.             <th>Concepto</th>
  10.             <th>Número períodico</th>
  11.             <th>Año</th>
  12.             <th>Días pagados</th>
  13.         </tr>
  14.     </thead>
  15.     <tbody>
  16.         <c:if test="${not empty historico}">
  17.            
  18.             <c:forEach var="h" items="${historico}">
  19.                     <tr>
  20.                         <td>
  21.                         <p th:text="${h.finvac}" />
  22.                         </td>
  23. ...
  24.                     </tr>
  25.             </c:forEach>
  26.         </c:if>
  27.     </tbody>

si ejecuto el código así como está me manda este error:
Cita:
org.springframework.expression.spel.SpelEvaluation Exception: EL1007E:(pos 0): Property or field 'finvac' cannot be found on null
Pero si cambio esta línea <p th:text="${h.finvac}" /> por esta otra <p th:text="${historico.get(0).finvac}" /> sí me da el resultado.

Otra cosa, con esta modificación yo esperaría obtener 10 líneas iguales (sólo obtengo 1), ya que la lista que entrego desde el controlador contiene 10 elementos, de hecho si hago esto: <p th:text="${historico.get(0).finvac}" /> me regresa un 10 (tal como esperaría).

Si imprimo la variable que contiene la lista me da esta salida:
Pero si dentro del forEach imprimo sólo la variable h no aparece información, es decir, no marca error pero únicamente coloca los tags p (<p th:text="${h}" />).

¿Qué estoy haciendo mal?
¿O qué no estoy haciendo?

Gracias por su tiempo y ayuda.

Saludos.
  #2 (permalink)  
Antiguo 07/11/2016, 04:50
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 7 años, 9 meses
Puntos: 182
Respuesta: Iteración en jsp extraña

Buenas,

Estas mezclando dos librerias de etiquetas en tu JSP.

Pour un lado utilizas JSTL para el foreach y por otro la etiqueta "th:" para mostrar el texto. Ambas librerias de etiquetas no se entienden entre si.

Si quieres leer el texto del foreach JSTL, deberas leerlo con JSTL.

Código XML:
Ver original
  1. <c:forEach var="h" items="${historico}">
  2.                     <tr>
  3.                         <td>
  4.                         <c:out value="${h.finvac}" />
  5.                         </td>
  6. ...
  7.                     </tr>
  8.             </c:forEach>

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 07/11/2016, 04:51
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 7 años, 9 meses
Puntos: 182
Respuesta: Iteración en jsp extraña

Buenas,

Estas mezclando dos librerias de etiquetas en tu JSP.

Pour un lado utilizas JSTL para el foreach y por otro la etiqueta "th:" (Spring?) para mostrar el texto. Ambas librerias de etiquetas no se entienden entre si, como es logico.

Si quieres leer el texto del foreach JSTL, deberas hacerlo con JSTL.

Código XML:
Ver original
  1. <c:forEach var="h" items="${historico}">
  2.                     <tr>
  3.                         <td>
  4.                         <c:out value="${h.finvac}" />
  5.                         </td>
  6. ...
  7.                     </tr>
  8.             </c:forEach>

NOTA: perdon por la duplicacion. No se como ha pasado.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #4 (permalink)  
Antiguo 07/11/2016, 08:40
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 13 años, 4 meses
Puntos: 46
Respuesta: Iteración en jsp extraña

Muchas gracias, con eso queda resuelto.

Saludos.

Etiquetas: extraña, jsp, spring
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 08:02.