ERRO ao converter DATA no JSF

7 respostas
W

Bom dia à todos !

Não consigo resolver o formato de data no jsf, alguém pode ajudar !

cadastroNotas.jsp

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Cadastro Notas</title>
    </head>
    <body>
        <f:view>
            <h:form>            
                <font color ="orange"><h1><h:outputText value="Cadastrar Notas"/></h1></font>
                <h:messages/> 
                <h:panelGrid columns="3">                

                    <h:outputText value="Professor:"/><br/>
                    <h:inputText value="#{disciplinaBean.discipina.professor.nome}" size="40" maxlength="100" required="true"/>

                    <h:outputText value="E-mail:"/><br/>
                    <h:inputText value="#{disciplinaBean.discipina.professor.email}" size="40" maxlength="100" required="true"/>

                    <h:outputLabel value="Titularização" for="titulo"/><br/>
                    <h:selectOneMenu value="#{disciplinaBean.discipina.professor.titulo}" id="titulo">
                        <f:selectItem itemValue="Pós-graduado"/>
                        <f:selectItem itemValue="Especialista"/>
                        <f:selectItem itemValue="Mestre"/>
                        <f:selectItem itemValue="Doutor"/>
                        <f:selectItem itemValue="PHD"/>                
                    </h:selectOneMenu>

                    <h:outputText value="Disciplina:"/><br/>
                    <h:inputText value="#{disciplinaBean.discipina.nome}" size="40" maxlength="100" required="true"/>


                    <h:outputLabel value="Tipo de avaliação:" for="tipoAv"/> <br/>
                    <h:selectOneMenu value="#{disciplinaBean.discipina.tipoAvaliacao}" id="tipoAv">
                        <f:selectItem itemValue="Prova"/>
                        <f:selectItem itemValue="Trabalho"/>
                        <f:selectItem itemValue="Participação"/>
                        <f:selectItem itemValue="Apresentação"/>
                        <f:selectItem itemValue="Outros"/>
                    </h:selectOneMenu>

                    <h:outputText value="Nota:"/><br/>
                    <h:inputText value="#{disciplinaBean.discipina.nota}" size="12" maxlength="100" required="true"/>


                    <h:outputText value="Data da Avaliação:"/><br/> // ERRO NESSE CAMPO STACK TRACE LOGO ABAIXO
                    <h:inputText value="#{disciplinaBean.discipina.dataProva}" size="12" maxlength="100" required="true">    h 
                        <f:convertDateTime pattern="dd/MM/yyyy"/>
                    </h:inputText>
                    <br/>

                </h:panelGrid>

                <h:commandButton value="Menu principal" action="menu" immediate="true"/>
                <h:commandButton value="Adicionar" action="#{disciplinaBean.finalizarCadastroNotas()}"/>
            </h:form>
        </f:view>
    </body>
</html>

--------------------------------------------------------------------------------------------------------------------------------
disciplinaBean

@ManagedBean
@SessionScoped
public class DisciplinaBean {
    
    private Disciplina discipina;
    ProfessorDAO professorDAO = new ProfessorDAO();    
    DisciplinaDAO disciplinaDAO = new DisciplinaDAO();
    

   
    public DisciplinaBean() {
    }

    public String adicionarDisciplina(){      
        discipina = new Disciplina();
        discipina.setProfessor(new Professor());      
        return "cadastroNotas";
    }
    
    public String finalizarCadastroNotas() throws SQLException, ClassNotFoundException{ 
        JOptionPane.showMessageDialog(null, "teste acesso classe bean discipina");
        professorDAO.adicionar(discipina.getProfessor());        
        disciplinaDAO.adicionar(discipina);
        
        return "finalizaCadAluno"; 
    }

    /**
     * @return the discipina
     */
    public Disciplina getDiscipina() {
        return discipina;
    }

    /**
     * @param discipina the discipina to set
     */
    public void setDiscipina(Disciplina discipina) {
       this.discipina = discipina;
    }
     
}

------------------------------------------------------------------------------------------------------------

disciplina.java

public class Disciplina implements java.io.Serializable {

    private int codigo;
    private String nome;
    private String tipoAvaliacao;
    private Date dataProva;
    private float nota;
    private Aluno aluno;
    private Curso curso;
    private Professor professor;

    /**
     * @return the codigo
     */
    public int getCodigo() {
        return codigo;
    }

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

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

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

    /**
     * @return the tipoAvaliacao
     */
    public String getTipoAvaliacao() {
        return tipoAvaliacao;
    }

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

    /**
     * @return the aluno
     */
    public Aluno getAluno() {
        return aluno;
    }

    /**
     * @param aluno the aluno to set
     */
    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }

    /**
     * @return the curso
     */
    public Curso getCurso() {
        return curso;
    }

    /**
     * @param curso the curso to set
     */
    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    /**
     * @return the professor
     */
    public Professor getProfessor() {
        return professor;
    }

    /**
     * @param professor the professor to set
     */
    public void setProfessor(Professor professor) {
        this.professor = professor;
    }


    /**
     * @return the nota
     */
    public float getNota() {
        return nota;
    }

    /**
     * @param nota the nota to set
     */
    public void setNota(float nota) {
        this.nota = nota;
    }

    /**
     * @return the dataProva
     */
    public Date getDataProva() {
        return dataProva;
    }

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

STACK TRACE

javax.faces.component.UpdateModelException: org.apache.jasper.el.JspELException: /cadastroNotas.jsp(58,20) ‘#{disciplinaBean.discipina.dataProva} Cannot convert 02/02/11 00:00 of type class java.util.Date to class java.sql.Date

at javax.faces.component.UIInput.updateModel(UIInput.java:853)

at javax.faces.component.UIInput.processUpdates(UIInput.java:735)

at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1113)

at javax.faces.component.UIForm.processUpdates(UIForm.java:272)

at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1113)

at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1224)

at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

at java.lang.Thread.run(Thread.java:636)

Caused by: org.apache.jasper.el.JspELException: /cadastroNotas.jsp(58,20) ‘#{disciplinaBean.discipina.dataProva} Cannot convert 02/02/11 00:00 of type class java.util.Date to class java.sql.Date

at org.apache.jasper.el.JspValueExpression.setValue(JspValueExpression.java:98)

at javax.faces.component.UIInput.updateModel(UIInput.java:818)

 28 more

obs.: LEMBRANDO QUE IMPORTEI O PACOTE NA CLASSE DISCIPLINA.JAVA COMO - import java.sql.Date;

7 Respostas

A

você já tentou alterar por java.util.Date e ver se o mesmo erro acontece?

W
andre.froes:
você já tentou alterar por java.util.Date e ver se o mesmo erro acontece?

Boa tarde Andre.froes

Se eu colocar como : java.util.Date resolve, mas da problemas na minha classe DAO e usando java.sql.Date resolve o problema do DAO mas da problema ao submeter o formulario
o erro está na stack trace

[code]
ps.setDate(3, disciplina.getDataProva()); // erro aqui utilizando java.util.Date agora utilizando java.sql.Date da problema na stack trace postada
[/cod]

Não sei o que fazer, sinceramente !

henriqueluz

Welder,

Use java.util.Date no seu DAO também. Qual o problema?
Como é que está o tipo no seu banco?

Abs,

W

riqueluz:
Welder,

Use java.util.Date no seu DAO também. Qual o problema?
Como é que está o tipo no seu banco?

Abs,

RiqueLuz

No banco está como date.

quando mudo para java.util.Date o erro acontece no DAO.

henriqueluz

Cola o código do DAO também.

A

Se você, no seu DAO, definir java.util.date para seu campo Date do banco de dados e chamá-lo em outras classes, você, além de uma maior flexibilidade de manipular as datas, poderá adicioná-lo no banco de dados normalmente Welder.

R

coloca java.util.Date pra tudo.
Qualquer coisa, caso vc queira utilizar o sql.Date, é só vc criar um converter (acho desnecessario esta opção, mas… é uma)

Criado 26 de julho de 2011
Ultima resposta 27 de jul. de 2011
Respostas 7
Participantes 4