Bem… boa tarde a todos… gostaria de saber se alguém pode me dar uma luz aqui… todos os meus métodos e jsps estavam funcionanod normalmente… assim que inseri as validações. começou a dar esse erro sempre que insiro dados errados, ou seja, sempre a validação entra em ação:
Don’t know how to iterate over supplied “items” in <forEach>
alguém sabe o que pode estar acontecendo? segue abaixo meu controller e meu jsp:
Controller:
@Resource
public class TemposDiariosController {
private final TempoDiarioDAO dao;
private final Result result;
private final Validator validator;
private final ColaboradorDAO colaboradorDao;
private final UsuarioWeb usuarioWeb;
private final ClassificacaoDiaDAO classificacaoDiaDao;
public TemposDiariosController(TempoDiarioDAO dao, Result result, Validator validator, ColaboradorDAO colaboradorDao, UsuarioWeb usuarioWeb, ClassificacaoDiaDAO classificacaoDiaDao){
this.dao = dao;
this.result = result;
this.validator = validator;
this.colaboradorDao = colaboradorDao;
this.usuarioWeb = usuarioWeb;
this.classificacaoDiaDao = classificacaoDiaDao;
}
@Restrito
public List<TempoDiario> lista(){
return dao.listaTudo();
}
@Restrito
public List<TempoDiario> listaPorColaboradorEMesEAnoAtual(Colaborador colaborador){
Date hoje = new Date();
String mes = new SimpleDateFormat("MM").format(hoje);
String ano = new SimpleDateFormat("yyyy").format(hoje);
Colaborador colaboradorTD = usuarioWeb.getLogado();
colaboradorDao.carregaLoginESenha(colaboradorTD);
return dao.listaPorColaborador(colaboradorTD, mes, ano);
}
//public List<TempoDiario> listaPorColaboradorEMesEAnoAtualParaAdicao(TempoDiario tempoDiario){
// String dia = tempoDiario.getDia();
// String mes = tempoDiario.getMes();
// String ano = tempoDiario.getAno();
// Colaborador colaboradorTD = usuarioWeb.getLogado();
// colaboradorDao.carregaLoginESenha(colaboradorTD);
// return dao.listaParaAdicao(colaboradorTD, dia, mes, ano);
//}
@Restrito
@Post @Path("/temposDiarios")
public void adiciona(final TempoDiario tempoDiario, Integer classificacaoDia){
tempoDiario.setUltimaAtualizacao(new GregorianCalendar().getTime());
tempoDiario.setColaborador(usuarioWeb.getLogado().getId());
Colaborador colaborador = new Colaborador();
colaborador.setId(usuarioWeb.getLogado().getId());
tempoDiario.setCodColaborador(usuarioWeb.getLogado());
tempoDiario.setCodDia(classificacaoDiaDao.carrega(classificacaoDia));
tempoDiario.setDataInclusao(new GregorianCalendar().getTime());
tempoDiario.setResponsavelInclusao(usuarioWeb.getLogado().getId());
tempoDiario.setSaldo(tempoDiario.calcularSaldo());
tempoDiario.setTotal(tempoDiario.getTempoTrabalhado());
final List<TempoDiario> listaRd = dao.listaParaAdicao(colaborador, tempoDiario.getDia(), tempoDiario.getMes(), tempoDiario.getAno());
for(int i=0; i< listaRd.size(); i++ ){
listaRd.get(i);
System.out.println(listaRd.size());
System.out.println(i);
}
validator.checking(new Validations(){{
that(tempoDiario.getEntrada1().length() == 4 || tempoDiario.getEntrada1().length() == 0,
"Entrada 1","entrada1.obrigatorio");
that(tempoDiario.getEntrada2().length() == 4 || tempoDiario.getEntrada2().length() == 0,
"Entrada 2","entrada2.obrigatorio");
that(tempoDiario.getEntrada3().length() == 4 || tempoDiario.getEntrada3().length() == 0,
"Entrada 3","entrada3.obrigatorio");
that(tempoDiario.getSaida1().length() == 4 || tempoDiario.getSaida1().length() == 0,
"Saida 1","saida1.obrigatorio");
that(tempoDiario.getSaida2().length() == 4 || tempoDiario.getSaida2().length() == 0,
"Saida 2","saida2.obrigatorio");
that(tempoDiario.getSaida3().length() == 4 || tempoDiario.getSaida3().length() == 0,
"Saida 3","saida3.obrigatorio");
that(listaRd.size() < 1,
"Data" , "data.obrigatorio");
}});
validator.onErrorUse(page()).of(TemposDiariosController.class).formulario();
dao.salva(tempoDiario);
result.redirectTo(TemposDiariosController.class).listaPorColaboradorEMesEAnoAtual(usuarioWeb.getLogado());
}
@Restrito
public void adicionado(){
}
public void menu(){
}
@Restrito
public void formulario(){
result.include("classificacaoDia", classificacaoDiaDao.listaTudo());
}
JSP:
<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:import url="header.jsp"/>
<body onload="document.getElementById('entrada1').focus()">
<c:forEach var="error" items="${errors}">
${error.category} - ${error.message}<br />
</c:forEach>
<form action="<c:url value="/temposDiarios"/>" method="POST">
<table>
<thead>
<tr>
<th>Dia</th>
<th>Mes</th>
<th>Ano</th>
</tr>
</thead>
<tbody>
<tr>
<jsp:useBean id="data" class="java.util.Date"/>
<td>
<label for="dia"></label>
<input id="dia" type="text" name="tempoDiario.dia" value="<fmt:formatDate pattern="dd" value="${data}"/>" style=" width : 65px;"></input>
</td>
<td>
<label for="mes"></label>
<input id="mes" type="text" name="tempoDiario.mes" value="<fmt:formatDate pattern="MM" value="${data}"/>" style=" width : 65px;"></input>
</td>
<td>
<label for="ano"></label>
<input id="ano" readonly="readonly" type="text" name="tempoDiario.ano" value="<fmt:formatDate pattern="yyyy" value="${data}"/>" style=" width : 65px;"></input>
</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Classificacao Dia</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<fieldset>
<select name="classificacaoDia" style=" height : 25px;">
<option value="">--Classificacao Dia--</option>
<c:forEach var="classificacaoDia" items="${classificacaoDia}">
<option value="${classificacaoDia.id}">${classificacaoDia.descricao}</option>
</c:forEach>
</select>
</fieldset>
</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Entrada</th>
<th>Saida</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label for="entrada1"></label>
<input id="entrada1" type="text" name="tempoDiario.entrada1" value="${tempoDiario.entrada1}" maxlength="4" />
</td>
<td>
<label for="saida1"></label>
<input id="saida1" type="text" name="tempoDiario.saida1" value="${tempoDiario.saida1}" maxlength="4"/>
</td>
</tr>
<tr>
<td>
<label for="entrada2"></label>
<input id="entrada2" type="text" name="tempoDiario.entrada2" value="${tempoDiario.entrada2}" maxlength="4"/>
</td>
<td>
<label for="saida2"></label>
<input id="saida2" type="text" name="tempoDiario.saida2" value="${tempoDiario.saida2}" maxlength="4"/>
</td>
</tr>
<tr>
<td>
<label for="entrada3"></label>
<input id="entrada3" type="text" name="tempoDiario.entrada3" value="${tempoDiario.entrada3}" maxlength="4"/>
</td>
<td>
<label for="saida3"></label>
<input id="saida3" type="text" name="tempoDiario.saida3" value="${tempoDiario.saida3}"maxlength="4"/>
</td>
</tr>
</tbody>
<a href="<c:url value="/temposDiarios/${tempoDiario.id}"/>">Cadastrar Atividade</a>
</table>
<table>
<thead>
<tr>Observações:</tr>
</thead>
<tbody>
<tr>
<td><label for="obs"></label>
<input id="obs" type="text" name="tempoDiario.obs" value="${tempoDiario.obs}" style="width : 631px; height : 98px;"/></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Saldo:</th>
</tr>
</thead>
<tbody>
<tr>
<td><label for="saldo"></label>
<input id="saldo" readonly="readonly" type="text" name="tempoDiario.saldo" value="${tempoDiario.saldo }"/>
</td>
</tr>
</tbody>
</table>
<button type="submit">Salvar</button>
</form>