Solucionado (ver solução)
Solucionado
(ver solução)
13
respostas

Dúvida no Ex. 7 da Aula 5 - Conversão e validação de dados

Fiz conforme o exercício explicou...

1 - Alterei o atributo dataLancamento, para Calendar 2 - Anotei com @Temporal 3 - Exclui e recriei o DB 4 - Alterei o setDataLancamento no PopulaBanco 5 - Executei o PopulaBanco

Porém quando abri o livro.xhtml no browser o resultado não foi o esperado:

Título    ISBN    Preço    Data Lançamento
| Dom Casmurro    | 978-8-52-504464-8    | 24.9    | java.util.GregorianCalendar[time=-2239736400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1899,MONTH=0,WEEK_OF_YEAR=2,WEEK_OF_MONTH=2,DAY_OF_MONTH=10,DAY_OF_YEAR=10,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0] |
13 respostas

Oi Ewerton,

vc tbm alterou o xhtml?

<h:inputText id="dataLancamento" value="#{livroBean.livro.dataLancamento.time}">
    <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
</h:inputText>

Abs

Sim Nico...

Ewerton poderia mostrar o arquivo livro.xhtml

tbm, se vc recebeu alguma exceção no console, colque aqui :)

livro.xhtml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<h:body>
    <h1>Novo Livro</h1>
    <h:form>
        <h:messages />
        <fieldset>
            <legend>Dados do Livro</legend>
            <h:panelGrid columns="2">

                <h:outputLabel value="Titulo:" for="titulo" />
                <h:inputText id="titulo" value="#{livroBean.livro.titulo}" />

                <h:outputLabel value="ISBN:" for="isbn" />
                <h:inputText id="isbn" value="#{livroBean.livro.isbn}" />

                <h:outputLabel value="Preço:" for="preco" />
                <h:inputText id="preco" value="#{livroBean.livro.preco}" />

                <h:outputLabel value="Data de Lançamento:" for="dataLancamento" />
                <h:inputText id="dataLancamento" value="#{livroBean.livro.dataLancamento.time}">
                    <f:convertDateTime pattern="dd/MM/yyyy"    timeZone="America/Sao_Paulo" />
                </h:inputText>
            </h:panelGrid>
        </fieldset>

        <fieldset>
            <legend>Dados do Autor</legend>
            <h:outputLabel value="Selecione o Autor:" for="autor" />
            <h:selectOneMenu value="#{livroBean.autorId}" id="autor">
                <f:selectItems value="#{livroBean.autores}" var="autor"
                    itemLabel="#{autor.nome}" itemValue="#{autor.id}" />
            </h:selectOneMenu>
            <h:commandButton value="Gravar Autor"
                action="#{livroBean.gravarAutor}" />
            <h:dataTable value="#{livroBean.autoresDoLivro}" var="autor">
                <h:column>
                    <h:outputText value="#{autor.nome}" />
                </h:column>
            </h:dataTable>
        </fieldset>
        <br />

        <h:commandButton value="Gravar" action="#{livroBean.gravar}" />

        <h2>Tabela de Livros cadastrados:</h2>
        <h:dataTable id="tabelaLivros" value="#{livroBean.livros}" var="livro">
            <h:column>
                <f:facet name="header">Título</f:facet> |
            <h:outputText value="#{livro.titulo}" />
            </h:column>

            <h:column>
                <f:facet name="header">ISBN</f:facet> |
            <h:outputText value="#{livro.isbn}" />
            </h:column>

            <h:column>
                <f:facet name="header">Preço</f:facet> |
            <h:outputText value="#{livro.preco}" />
            </h:column>

            <h:column>
                <f:facet name="header">Data Lançamento</f:facet> |
            <h:outputText value="#{livro.dataLancamento}" /> |
        </h:column>
        </h:dataTable>

    </h:form>
</h:body>
</html>

No console, não gerou nenhum erro:

mar 30, 2016 11:21:45 AM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
mar 30, 2016 11:21:45 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.8.Final}
mar 30, 2016 11:21:45 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
mar 30, 2016 11:21:45 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
mar 30, 2016 11:21:46 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
mar 30, 2016 11:21:46 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
mar 30, 2016 11:21:46 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: true
mar 30, 2016 11:21:46 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/livrariadb]
mar 30, 2016 11:21:46 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=root, password=****, autocommit=true, release_mode=auto}
mar 30, 2016 11:21:47 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
mar 30, 2016 11:21:47 AM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
mar 30, 2016 11:21:47 AM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000228: Running hbm2ddl schema update
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000102: Fetching database metadata
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000396: Updating schema
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: livrariadb.autor
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [nome, id]
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: []
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [primary]
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: livrariadb.livro
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [preco, isbn, titulo, id, datalancamento]
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: []
mar 30, 2016 11:21:48 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [primary]
mar 30, 2016 11:21:49 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: livrariadb.livro_autor
mar 30, 2016 11:21:49 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [livro_id, autores_id]
mar 30, 2016 11:21:49 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [fk9590997ad70c7e4a, fk9590997afa17418]
mar 30, 2016 11:21:49 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [fk9590997afa17418, fk9590997ad70c7e4a]
mar 30, 2016 11:21:49 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: select autor0_.id as id1_, autor0_.nome as nome1_ from Autor autor0_
Hibernate: select autor0_.id as id1_, autor0_.nome as nome1_ from Autor autor0_
Hibernate: select livro0_.id as id0_, livro0_.dataLancamento as dataLanc2_0_, livro0_.isbn as isbn0_, livro0_.preco as preco0_, livro0_.titulo as titulo0_ from Livro livro0_
Hibernate: select livro0_.id as id0_, livro0_.dataLancamento as dataLanc2_0_, livro0_.isbn as isbn0_, livro0_.preco as preco0_, livro0_.titulo as titulo0_ from Livro livro0_
Hibernate: select livro0_.id as id0_, livro0_.dataLancamento as dataLanc2_0_, livro0_.isbn as isbn0_, livro0_.preco as preco0_, livro0_.titulo as titulo0_ from Livro livro0_
Hibernate: select livro0_.id as id0_, livro0_.dataLancamento as dataLanc2_0_, livro0_.isbn as isbn0_, livro0_.preco as preco0_, livro0_.titulo as titulo0_ from Livro livro0_
Hibernate: select livro0_.id as id0_, livro0_.dataLancamento as dataLanc2_0_, livro0_.isbn as isbn0_, livro0_.preco as preco0_, livro0_.titulo as titulo0_ from Livro livro0_
Hibernate: select livro0_.id as id0_, livro0_.dataLancamento as dataLanc2_0_, livro0_.isbn as isbn0_, livro0_.preco as preco0_, livro0_.titulo as titulo0_ from Livro livro0_

Ewerton o erro ocorre na tabela de livros correto?

Nico acho que o erro está na linha: ` xmlns:f="http://java.sun.com/jsf/core">


Coloquei:

xmlns:f="http://java.sun.com/jsp/jstl/core">

Mas ai gerou erro no console:

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/livraria] threw exception [/livro.xhtml @28,38 Tag Library supports namespace: http://java.sun.com/jsp/jstl/core, but no tag was defined for name: convertDateTime] with root cause javax.faces.view.facelets.TagException: /livro.xhtml @28,38 Tag Library supports namespace: http://java.sun.com/jsp/jstl/core, but no tag was defined for name: convertDateTime at com.sun.faces.facelets.compiler.CompilationManager.pushTag(CompilationManager.java:304) at com.sun.faces.facelets.compiler.SAXCompiler$CompilationHandler.startElement(SAXCompiler.java:257) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:425) at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:401) at com.sun.faces.facelets.compiler.Compiler.compile(Compiler.java:124) at com.sun.faces.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:304) at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$100(DefaultFaceletFactory.java:92) at com.sun.faces.facelets.impl.DefaultFaceletFactory$1.newInstance(DefaultFaceletFactory.java:159) at com.sun.faces.facelets.impl.DefaultFaceletFactory$1.newInstance(DefaultFaceletFactory.java:157) at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:83) at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:78) at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99) at java.util.concurrent.FutureTask.run(Unknown Source) at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114) at com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:121) at com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:62) at com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:255) at com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:200) at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:864) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source)


E no browser:

HTTP Status 500 - /livro.xhtml @28,38 Tag Library supports namespace: http://java.sun.com/jsp/jstl/core, but no tag was defined for name: convertDateTime ```

Na verdade eu revi o vídeo e a importação no livro.xhtml está correta:

xmlns:f="http://java.sun.com/jsp/core">
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

tem que estar desta maneira. Esta assim? Se não estiver deixe assim

solução!

E na coluna da Data onde mostra a tabela de livros cadastrados altere para este modelo acrescente a tag

        <h:column>
            <f:facet name="header">Data</f:facet>
            <h:outputText value="#{livro.dataLancamento.time}">
                <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
            </h:outputText>
        </h:column>

Putz Gabriel era isso mesmo...

Estava => <h:outputText value="#{livro.dataLancamento}" /> | Coloquei => <h:outputText value="#{livro.dataLancamento.time}">

E resolveu...

Obrigado pela ajuda, Nico e Gabriel !!!

Um abraço !!

vi agora que já foi resolvido! Blz entao!!

Opa , abs

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software