Bom dia.
Estou desenvolvendo um sistema utilizando JSF / Icefaces. Em uma determinada página, exibo uma lista das datas pertencentes a um periodo para o usuário selecionar. O problema é que ao salvar, o sistema apresenta erros.
...
private void populateDataPeriodoCardapio(DataPeriodoCardapio per, ResultSet rs) throws SQLException, ClassNotFoundException {
per.setPeriodoCard(getById(rs.getInt("ID_PERIODO_CARD")));
per.setData(rs.getDate("DATA"));
}
public List<DataPeriodoCardapio> getDataPeriodoCardapio(int idPerCard) throws ClassNotFoundException, SQLException, Exception {
List<DataPeriodoCardapio> toReturn = new LinkedList<DataPeriodoCardapio>();
PreparedStatement ps = (PreparedStatement) getPreparedStatement("SELECT * FROM VW_DATA_PERIODO_CARD WHERE ID_PERIODO_CARD = ?");
ps.setInt(1, idPerCard);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
DataPeriodoCardapio rece = new DataPeriodoCardapio();
populateDataPeriodoCardapio(rece, rs);
toReturn.add(rece);
}
return toReturn;
}
...
public class RelCardapioEscolaFace {
private RelCardapioEscolaDAO rceDAO = new RelCardapioEscolaDAO();
private EscolaDAO escDAO = new EscolaDAO();
private TipoEnsinoDAO tensDAO = new TipoEnsinoDAO();
private CardapioDAO cardDAO = new CardapioDAO();
private PeriodoEscolaDAO pescDAO = new PeriodoEscolaDAO();
private PeriodoCardapioDAO perCardDAO = new PeriodoCardapioDAO();
private RelCardapioEscola selectedRelCardapioEscola;
private List<RelCardapioEscola> relCardapioEscola;
private PeriodoCardapio periodoCard;
public RelCardapioEscolaFace() {
System.out.println("RelCardapioEscola Face");
}
public String startAddRelCardapioEscola () {
selectedRelCardapioEscola = new RelCardapioEscola();
return "gotoAddNewRelCardapioEscola";
}
public String finishAddRelCardapioEscola () throws ClassNotFoundException, SQLException {
rceDAO.add(selectedRelCardapioEscola);
// Limpa o cache
relCardapioEscola = null;
return "gotoAddNewRelCardapioEscola";
}
public List<RelCardapioEscola> getRelCardapioEscolaByPeriodoCard() throws ClassNotFoundException, SQLException {
relCardapioEscola = null;
if (relCardapioEscola == null){
relCardapioEscola = rceDAO.getRelCardapioEscolaByPecard(periodoCard.getIdPeriodoCard());
}
return relCardapioEscola;
}
public String removeRelCardapioEscola() throws ClassNotFoundException, SQLException {
rceDAO.delete(selectedRelCardapioEscola);
// Limpa o cache
relCardapioEscola = null;
return "gotoAddNewRelCardapioEscola";
}
public RelCardapioEscola getSelectedRelCardapioEscola() {
return selectedRelCardapioEscola;
}
public void setSelectedRelCardapioEscola(RelCardapioEscola selectedRelCardapioEscola) {
this.selectedRelCardapioEscola = selectedRelCardapioEscola;
}
public List<SelectItem> getEscola() throws ClassNotFoundException, SQLException {
List<SelectItem> toReturn = new LinkedList<SelectItem>();
for (Escola ali: escDAO.getAllEscola()) {
toReturn.add(new SelectItem(ali,ali.getNomeEscola()));
}
return toReturn;
}
public List<SelectItem> getTipoEnsino() throws ClassNotFoundException, SQLException {
List<SelectItem> toReturn = new LinkedList<SelectItem>();
for (TipoEnsino tens: tensDAO.getAllTipoEnsino()) {
toReturn.add(new SelectItem(tens,tens.getTipoEnsino()));
}
return toReturn;
}
public List<SelectItem> getCardapio() throws ClassNotFoundException, SQLException {
List<SelectItem> toReturn = new LinkedList<SelectItem>();
for (Cardapio card: cardDAO.getAllCardapio()) {
toReturn.add(new SelectItem(card,card.getCardapio()));
}
return toReturn;
}
public List<SelectItem> getPeriodoEscola() throws ClassNotFoundException, SQLException {
List<SelectItem> toReturn = new LinkedList<SelectItem>();
for (PeriodoEscola pesc: pescDAO.getAllPeriodoEscola()) {
toReturn.add(new SelectItem(pesc,pesc.getPeriodo()));
}
return toReturn;
}
public List<SelectItem> getDataPeriodoCardapio() throws ClassNotFoundException, SQLException, Exception {
List<SelectItem> toReturn = new LinkedList<SelectItem>();
for (DataPeriodoCardapio dataPerCard: perCardDAO.getDataPeriodoCardapio(periodoCard.getIdPeriodoCard())) {
toReturn.add(new SelectItem(dataPerCard, dataPerCard.getData().toString()));
}
return toReturn;
}
public PeriodoCardapio getPeriodoCard() {
return periodoCard;
}
public void setPeriodoCard(PeriodoCardapio periodoCard) {
this.periodoCard = periodoCard;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : SIGAEWeb1
Created on : 24/02/2010, 11:42:41
Author : jose
-->
<jsp:root xmlns:ui="http://java.sun.com/jsf/facelets" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ice="http://www.icesoft.com/icefaces/component">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<f:view>
<html>
<head>
<title>SIGAE - cardapio escola</title>
</head>
<body bgcolor="#E6FEFF">
<ui:include src="menu.jspx"></ui:include>
<br/><br/><br/>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 14pt;" align="center">RELACIONAMENTO DE CARDAPIOS COM ESCOLAS</div><br/><br/>
<ice:form>
<ice:messages/>
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt;" align="center">
<ice:commandButton action="gotoListPeriodoCardapio" value="Voltar"/>
<ice:commandButton action="#{RelCardapioEscolaFace.finishAddRelCardapioEscola}" value="Adicionar"/><br/>
<ice:panelGrid columns="2">
<ice:outputLabel value="escola"/>
<ice:selectOneMenu value="#{RelCardapioEscolaFace.selectedRelCardapioEscola.escola}">
<f:selectItems value="#{RelCardapioEscolaFace.escola}"/>
<f:converter converterId="EscolasConversor"/>
</ice:selectOneMenu>
<ice:outputLabel value="tipo ensino"/>
<ice:selectOneMenu value="#{RelCardapioEscolaFace.selectedRelCardapioEscola.tipoEnsino}">
<f:selectItems value="#{RelCardapioEscolaFace.tipoEnsino}"/>
<f:converter converterId="TipoEnsinoConversor"/>
</ice:selectOneMenu>
<ice:outputLabel value="periodo escola"/>
<ice:selectOneMenu value="#{RelCardapioEscolaFace.selectedRelCardapioEscola.periodoEscola}">
<f:selectItems value="#{RelCardapioEscolaFace.periodoEscola}"/>
<f:converter converterId="PeriodoEscolaConversor"/>
</ice:selectOneMenu>
<ice:outputLabel value="data"/>
<ice:selectOneMenu value="#{RelCardapioEscolaFace.selectedRelCardapioEscola.data}">
<f:selectItems value="#{RelCardapioEscolaFace.dataPeriodoCardapio}"/>
<f:convertDateTime/>
</ice:selectOneMenu>
</ice:panelGrid><br/><br/>
<ice:dataTable style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt;" bgcolor="white" border="1" var="item" value="#{RelCardapioEscolaFace.relCardapioEscolaByPeriodoCard}">
<ice:column>
<f:facet name="header">
<ice:outputText value="escola"/>
</f:facet>
<ice:outputText value="#{item.escola.escola}" style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt"/>
</ice:column>
<ice:column>
<f:facet name="header">
<ice:outputText value="tipo ensino"/>
</f:facet>
<ice:outputText value="#{item.tipoEnsino.tipoEnsino}"/>
</ice:column>
<ice:column>
<f:facet name="header">
<ice:outputText value="data"/>
</f:facet>
<ice:outputText value="#{item.data}"/>
</ice:column>
<ice:column>
<f:facet name="header">
<ice:outputText value="cardapio"/>
</f:facet>
<ice:outputText value="#{item.cardapio.cardapio}"/>
</ice:column>
<ice:column>
<f:facet name="header">
<ice:outputText value="ações"/>
</f:facet>
<ice:commandLink value="excluir" action="#{RelCardapioEscolaFace.removeRelCardapioEscola}">
<f:setPropertyActionListener target="#{RelCardapioEscolaFace.selectedRelCardapioEscola}" value="#{item}"/>
</ice:commandLink>
</ice:column>
</ice:dataTable>
</div>
</ice:form>
</body>
</html>
</f:view>
</jsp:root>
Quando utilizo
<ice:outputLabel value="data"/>
<ice:selectOneMenu value="#{RelCardapioEscolaFace.selectedRelCardapioEscola.data}">
<f:selectItems value="#{RelCardapioEscolaFace.dataPeriodoCardapio}"/>
<f:convertDateTime/>
</ice:selectOneMenu>
Ocorre a exception abaixo ao acessar a pagina:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
java.text.DateFormat.format(DateFormat.java:281)
java.text.Format.format(Format.java:140)
javax.faces.convert.DateTimeConverter.getAsString(DateTimeConverter.java:456)
com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.converterGetAsString(DomBasicRenderer.java:232)
com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.formatComponentValue(DomBasicRenderer.java:198)
com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.renderOption(MenuRenderer.java:312)
com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.renderOptions(MenuRenderer.java:493)
com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.renderSelect(MenuRenderer.java:419)
com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:119)
com.icesoft.faces.component.ext.renderkit.MenuRenderer.encodeEnd(MenuRenderer.java:51)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:370)
com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:208)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:492)
com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:282)
com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:159)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:19)
com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132)
com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74)
com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
Quando utilizo sem o f:converter
<ice:outputLabel value="data"/>
<ice:selectOneMenu value="#{RelCardapioEscolaFace.selectedRelCardapioEscola.data}">
<f:selectItems value="#{RelCardapioEscolaFace.dataPeriodoCardapio}"/>
</ice:selectOneMenu>
A pagina carrega, mas ao salvar, é apresentado:
Erro de validação: informação inválida.
Alguem tem alguma dica para passar?