RESOLVIDO: Duvidas no Converter

E aew blz?

bom minha dúvida é o seguinte estou com problemas em converter a data q vem do banco de dados para mostrar na minha dataTable.

segue aqui minha JSP.

  <h:column>
                        <f:facet name="header">
                            <h:outputText value="Publicado em"/>
                        </f:facet>
                        <h:outputText value="#{item.publicacao}" converter="converterDataSQL"></h:outputText>
   </h:column>

meu Converter


public class ConverterDataSQL implements Converter {

    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
        String formatado = null;
        if (value == null) {
            return null;

        }
        Date date = null;

        try {
            DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            date =  (Date) df.parse(value);
            formatado =  df.format(date);
        } catch (ParseException e) {
            throw new ConverterException("Data no Formato inválido! ");
        }
        return formatado;
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException{
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Date date = null;
        try {
            date = (Date) df.parse((String) value);   // aqui está dando o erro
        } catch (ParseException e) {
            e.printStackTrace();
        }

        String formatado = df.format(date);
        return formatado;
    }
}

no faces.config.xml


 <!-- CONVERSOR DE DATA SQL  -->

    <converter>
        <converter-id>converterDataSQL</converter-id>
        <converter-class>util.ConverterDataSQL</converter-class>

    </converter>

java.lang.ClassCastException: java.sql.Date cannot be cast to java.lang.String
at util.ConverterDataSQL.getAsString(ConverterDataSQL.java:44)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:469)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:322)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:279)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeChildren(TableRenderer.java:307)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:636)

Está dando esse erro nao sei o q pode ser. Porem o meu publicacao é do tipo Date. Se alguem puder me ajudar agradeço desde já abraços

No getAsString o seu value sempre vai ser um Java.sql.Date

Nessa linha do erro vc tá tentando fazer cast para String.

O erro é esse.

e como q faço pra q seja Date:?

java.util.Date jDate =  new java.util.Date(sDate.getTime());

sDate é um java.sql.Date

tudo bem eu fiz assim e na minha tabela apareceu a data formatada certinha.


 public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Date date = null;

        try {
            //date = (Date) df.parse((String) value);
            
            java.sql.Date sDate = (java.sql.Date) value;
            date = new java.util.Date(sDate.getTime());


        } catch (Exception e) {
            e.printStackTrace();
        }

        String formatado = df.format(date);
        System.out.println("formatado " + formatado);
        return formatado;
    }

porem quando estou inserindo ele dah um erro contrário ao que eu passei anteriormente. Pois quando faço a inserçao ele acusa q é string e nao sql.date.


java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Date
        at util.ConverterDataSQL.getAsString(ConverterDataSQL.java:47)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:469)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:322)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:279)
        at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:242)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
        at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
        at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
        at java.lang.Thread.run(Thread.java:636)
09/06/2010 13:28:41 com.sun.faces.lifecycle.LifecycleImpl phase
WARNING: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@a792d3) threw exception
java.lang.NullPointerException
        at java.util.Calendar.setTime(Calendar.java:1092)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:876)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:869)
        at java.text.DateFormat.format(DateFormat.java:333)
        at util.ConverterDataSQL.getAsString(ConverterDataSQL.java:55)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:469)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:322)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:279)
        at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:242)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
        at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
        at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
        at java.lang.Thread.run(Thread.java:636)

Muito estranho isso.

Mudando um pouco o foco.

Viocê já tentou nao usar Custom Converter e fazer com o do JSF ?

<h:outputText value="#{item.publicacao}"  converter="converterDataSQL">
              <f:convertDateTime pattern="dd/MM/yyyy hh:mm:ss"/>
</h:outputText>  

Tbm uso assim, mas com locale e timezone pra nao dar problema, assim da pra pegar do banco conforme usuario e tal, e sem declarar o converter, veja:

<h:outputText value="#{item.publicacao}" > <f:convertDateTime pattern="dd/MM/yyyy" locale="pt,BR" timeZone="Brazil/East" /> </h:outputText>

jah sim pois ele dá um erro

sourceId=cadastro:publicacao[severity=(ERROR 2), summary=(cadastro:publicacao: An error occurred when processing your submitted information. ), detail=(cadastro:publicacao: An error occurred when processing your submitted information. )]

Ja tentou sem o converter como eu mostrei?

Creio que pro codigo funcionar deveria ser assim

[code]public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException{
DateFormat df = new SimpleDateFormat(“dd/MM/yyyy”);
String formatado = null;
try {
formatado = df.format((Date)value); //value é uma instancia de Date
} catch (ParseException e) {
e.printStackTrace();
}

    return formatado;
}[/code]

e aew vi-gb blz??

blz esse código funfou blz. Na hora q vou mostrar no meu dataTable.

até aí tudo bem.

Porem na minha jsp de cadastro estou fazendo isso

                    <h:outputText value="Publicação">
                        <f:convertDateTime pattern="dd/MM/yyyy"/>
                    </h:outputText>
                    <h:inputText size="10" id="publicacao" maxlength="10"  value="#{livrosView.livros.publicacao}" required="true"/>

No meu DAO.


public void salvar(Livros livro) throws LivrariaDAOException {
        PreparedStatement ps = null;
        Connection conn = null;

        if (livro == null) {
            throw new LivrariaDAOException("O valor passado não pode ser nulo");

        }
        try {
            String sql = "INSERT INTO livros(isbn, titulo, edicao_num, ano_publicacao, descricao)"
                    + "VALUES (?,?,?,?,?)";
            conn = this.conn;
            ps = conn.prepareStatement(sql);
            ps.setString(1, livro.getIsbn());
            System.out.println("insert.isbn " + livro.getIsbn());
            ps.setString(2, livro.getTitulo());
            System.out.println("insert.titulo " + livro.getTitulo());
            ps.setInt(3, livro.getEdicao());
            System.out.println("insert.edicao " + livro.getEdicao());


            System.out.println("insert.publicacao " + livro.getPublicacao());
            ps.setDate(4, livro.getPublicacao());

            ps.setString(5, livro.getDescricao());
            System.out.println("insert.descricao " + livro.getDescricao());

            ps.executeUpdate();
            //ps.clearParameters();

        } catch (SQLException e) {
            throw new LivrariaDAOException("Erro ao inserir os dados " + e);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            ConnectionLivrariaFactory.closeConnection(conn, ps);
        }
    }

Quando faço meu Insert ele acusa isso

INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=cadastro:publicacao[severity=(ERROR 2), summary=(Conversion Error setting value '10/01/2013' for 'null Converter'. ), detail=(Conversion Error setting value '10/01/2013' for 'null Converter'. )]

Acredito eu q esse erro seja nullPointer. Mas como pode estar nulo se eu passo o parametro na minha JSP.

Já tentei tirar o value do inputText value="#{livrosView.livros.publicacao}", daí é lógico q fica null. Mas nao dá erro nenhum e salva normal.

Tenta assim:

[code]<h:outputText value=“Publicação”>

</h:outputText>
<h:inputText size=“10” id=“publicacao” maxlength=“10” value="#{livrosView.livros.publicacao}" required=“true”>
<f:convertDateTime pattern=“dd/MM/yyyy” locale=“pt,BR” timeZone=“Brazil/East”/>
</h:inputText>[/code]

O convertTime tem que ficar dentro da tag input.

pow cara fiz isso mas, ainda fica com erro q nao pode processar

INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=cadastro:publicacao[severity=(ERROR 2), summary=(cadastro:publicacao: An error occurred when processing your submitted information. ), detail=(cadastro:publicacao: An error occurred when processing your submitted information. )]

Será por estou tentando salvar uma string na data?

na minha JSP eu passo String certo? ele guarda no meu bean livros #{livrosView.livros.publicacao}. Na verdade nem chega no SQL pois tenho vários System.out.println e nao imprime nenhum.

estou com o raciocínio correto?

Ixi, que estranho eu testei aqui e funcionou. :frowning:

<h:inputText size="10"  id="publicacao" maxlength="10"  value="#{livrosView.livros.publicacao}"  required="true">
	<f:convertDateTime pattern="dd/MM/yyyy" locale="pt,BR" timeZone="Brazil/East"/>
</h:inputText>

Funciona assim: o seu value vc ta passando um Date, mas dentro da tag inputText tem uma tag converter onde vc passa o padrao que vc deseja usar e as configuracoes regionais, atraves disso ele converte para este padrao quando for exibir e desconverte a string em Date quando for enviar de volta.

Posta como ficou o seu codigo pra eu ver.

Cara nao sei mais o faço, ele insiste no erro.

na JSP de insert


<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            <title>Cadastro de Livros</title>
        </head>
        <body>

            <h:form id="cadastro">
                <h:panelGrid columns="3">
                    <f:facet name="header">
                        <h:outputText value="Cadastro de Livros"/>
                    </f:facet>
                    <h:outputText value="ISBN:"/>
                    <h:inputText size="13" maxlength="13" id="isbn" value="#{livrosView.livros.isbn}" required="true"/>
                    <h:message for="isbn"/>

                    <h:outputText value="Título:" />
                    <h:inputText size="30" id="titulo" value="#{livrosView.livros.titulo}" required="true"/>
                    <h:message for="titulo"/>

                    <h:outputText value="Edição:" />
                    <h:inputText size="10" id="edicao" value="#{livrosView.livros.edicao}" required="true"/>
                    <h:message for="edicao"/>

                    <h:outputText value="Publicação:"/>
                    <h:inputText size="10"  id="publicacao" maxlength="10"  value="#{livrosView.livros.publicacao}"  required="true" >
                        <f:convertDateTime pattern="dd/MM/yyyy" locale="pt,BR" timeZone="Brazil/East"/>
                    </h:inputText>

                    <h:outputText value="Descrição:" />
                    <h:inputTextarea cols="20" id="descricao" rows="5" value="#{livrosView.livros.descricao}"/>
                    <h:message for="descricao"/>
                </h:panelGrid>

                <h:commandButton value="Cadastrar" action="#{livrosView.create}"/>
                <h:commandButton value="Limpar" type="reset"/>
                <h:commandButton value="Cancelar" action="mostrar"/>

            </h:form>

        </body>
    </html>
</f:view>

no DAO


public void salvar(Livros livro) throws LivrariaDAOException {
        System.out.println("Salvar");
        PreparedStatement ps = null;
        Connection conn = null;

        if (livro == null) {
            throw new LivrariaDAOException("O valor passado não pode ser nulo");

        }
        try {
            String sql = "INSERT INTO livros(isbn, titulo, edicao_num, ano_publicacao, descricao)"
                    + "VALUES (?,?,?,?,?)";
            conn = this.conn;
            ps = conn.prepareStatement(sql);
            ps.setString(1, livro.getIsbn());
            System.out.println("insert.isbn " + livro.getIsbn());
            ps.setString(2, livro.getTitulo());
            System.out.println("insert.titulo " + livro.getTitulo());
            ps.setInt(3, livro.getEdicao());
            System.out.println("insert.edicao " + livro.getEdicao());

           // Date date = DataUtil.parseStringToDate(String.valueOf(livro.getPublicacao()));
            //System.out.println("date "+date);
            System.out.println("insert.publicacao " + livro.getPublicacao());
            ps.setDate(4, livro.getPublicacao());

            ps.setString(5, livro.getDescricao());
            System.out.println("insert.descricao " + livro.getDescricao());

            ps.executeUpdate();
            //ps.clearParameters();

        } catch (SQLException e) {
            throw new LivrariaDAOException("Erro ao inserir os dados " + e);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            ConnectionLivrariaFactory.closeConnection(conn, ps);
        }
    }


no bean


package dao.model;

import java.io.Serializable;
import java.sql.Date;

/**
 *
 * @author bastos
 */
public class Livros implements Serializable {

    private String isbn;
    private String titulo;
    private int edicao;
    private Date publicacao;
    private String descricao;

    public Livros() {
    }

    /**
     * @return the isbn
     */
    public String getIsbn() {
        return isbn;
    }

    /**
     * @param isbn the isbn to set
     */
    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    /**
     * @return the titulo
     */
    public String getTitulo() {
        return titulo;
    }

    /**
     * @param titulo the titulo to set
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    /**
     * @return the edicao
     */
    public int getEdicao() {
        return edicao;
    }

    /**
     * @param edicao the edicao to set
     */
    public void setEdicao(int edicao) {
        this.edicao = edicao;
    }

    /**
     * @return the publicacao
     */
    public Date getPublicacao() {
        
        return publicacao;
    }

    /**
     * @param publicacao the publicacao to set
     */
    public void setPublicacao(Date publicacao) {
        this.publicacao = publicacao;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Livros(String isbn, String titulo, int edicao, Date publicacao, String descricao) {

        this.isbn = isbn;
        this.titulo = titulo;
        this.edicao = edicao;
        this.publicacao = publicacao;
        this.descricao = descricao;
    }

}

o problema q isso tah me empacando

tenta sem o ‘converter=“converterDataSQL”’.

Ou arruma ele para o jeito que te passei no outro post

tah sem converte é pq sem querer coloquei mas tah sem

10/06/2010 13:45:09 com.sun.faces.lifecycle.RenderResponsePhase execute
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=cadastro:publicacao[severity=(ERROR 2), summary=(cadastro:publicacao: An error occurred when processing your submitted information. ), detail=(cadastro:publicacao: An error occurred when processing your submitted information. )]

HUm acho q achei o problema, vc ta usando o Date do sql e nao do java.util, vou dar uma pesquisada se tem como fazer pra este date.
Se voce mudar o Date dá problema pra salvar no banco?

Consegui usando o converter, não sei é a melhor maneira mas foi, segue a classe converter:

import java.sql.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

public class ConverterDataSQL implements Converter {

    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
       Date data = null;
        if (value == null) {
            return null;

        }
        java.util.Date date = null;

        try {
            DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            date =  (java.util.Date) df.parse(value);
            data = new Date(date.getTime());
        } catch (ParseException e) {
            throw new ConverterException("Data no Formato inválido! ");
        }
        return data;
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException{
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        try {
        	Date dataSql = (Date) value;
        	java.util.Date dataUtil = new java.util.Date(dataSql.getTime());
        	return df.format(dataUtil);
        } catch (Exception e) {
            e.printStackTrace();
        }

        
        return null;
    }
}

retire o convertTime do input e declara o converter.

Achei tbm alguns topicos aqui no guj mesmo falando sobre isso:

http://www.guj.com.br/posts/list/22659.java
http://www.guj.com.br/posts/list/106054.java
http://www.guj.com.br/posts/list/55158.java

Tenta ai e diz se foi. :slight_smile:

ow vi-gb mto obrigadooooooooooooooooo funfou blz.

Testei usando java.sql e funcionou. E usando java.util tb funfou blz.
tu me ajudou mto mto obrigadooo vou alterar o topico como resolvido
mto obrigadoooo