Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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