Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2016, 15:30
Avatar de lair
lair
 
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 10 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:
Cita:
[com.gm.parse.obj.VacacionesPO@486ebbfc, com.gm.parse.obj.VacacionesPO@74b59ace, com.gm.parse.obj.VacacionesPO@4bbb6957, com.gm.parse.obj.VacacionesPO@2e7af004, com.gm.parse.obj.VacacionesPO@13760f6c, com.gm.parse.obj.VacacionesPO@4b4d8426, com.gm.parse.obj.VacacionesPO@5b2cadc9, com.gm.parse.obj.VacacionesPO@22af9c78, com.gm.parse.obj.VacacionesPO@101ea2e, com.gm.parse.obj.VacacionesPO@264a329c]
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.