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 originalpublic List<VacacionesPO> historicoDummy(){
List<VacacionesPO> lst = new ArrayList<VacacionesPO>();
VacacionesPO item = null;
item = new VacacionesPO();
item.setPernr(i.toString());
item.setPnalt(i.toString());
item.setBukrs(i.toString());
item.setInivac(i.toString());
item.setFinvac(i.toString());
item.setNumcon(i.toString());
item.setPeriod(i.toString());
item.setAnoper(i.toString());
item.setVacdia(i.toString());
lst.add(item);
}
return lst;
}
La clase VacacionesPO está definida así (getters y setter fueron omitidos):
En mi jsp tengo esto:
Código HTML:
Ver original<table border="1" width="100%"> <th>Número períodico
</th> <c:if test="${not empty historico}">
<c:forEach var="h" items="${historico}">
<p th:text="${h.finvac}" /> ...
</c:forEach>
</c:if>
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.