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!

10
respostas

HTTP Status 500 - /livro.xhtml @26,50 <f:ajax>

Boa noite, não sei o q está errado, meu código estava rodando, ai fiz os últimos exerc. e apresenta esse erro:

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/livraria] threw exception [/livro.xhtml @26,50 <f:ajax> 'Keypress' is not a supported event for HtmlInputText.  Please specify one of these supported event names: blur, change, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup, select, valueChange.] with root cause
javax.faces.view.facelets.TagException: /livro.xhtml @26,50 <f:ajax> 'Keypress' is not a supported event for HtmlInputText.  Please specify one of these supported event names: blur, change, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup, select, valueChange.
    at com.sun.faces.facelets.tag.jsf.core.AjaxHandler.applyAttachedObject(AjaxHandler.java:324)

Segue meu cód 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:head />
<h:body>
    <h1>Novo Livro</h1>
    <h:form>
        <h:messages id="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}"
                    required="true" requiredMessage="Título obrigtório"
                    validatorMessage="Título não pode ser superior a 40 caracteres">
                    <f:validateLength maximum="40" />
                    <f:ajax event="blur" render="messages" />
                </h:inputText>

                <h:outputLabel value="ISBN:" for="isbn" />
                <h:inputText id="isbn" value="#{livroBean.livro.isbn}"
                    validator="#{livroBean.comecaComDigitoUm}">
                    <f:ajax event="Keypress" render="messages"/>
                    </h:inputText>

                <h:outputLabel value="Preço:" for="preco" />
                <h:inputText id="preco" value="#{livroBean.livro.preco}"
                    label="Preço">
                    <f:validateDoubleRange minimum="1.0" maximum="1000.00" />
                </h:inputText>

                <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 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}">
                <f:ajax execute="autor" render="tabelaAutores" />
            </h:commandButton>
            <h:dataTable value="#{livroBean.autoresDoLivro}" var="autor"
                id="tabelaAutores">
                <h:column>
                    <h:outputText value="#{autor.nome}" />
                </h:column>
            </h:dataTable>
        </fieldset>
        <h:commandButton value="Gravar" action="#{livroBean.gravar}">
            <f:ajax execute="@form" render="@form :tabelaLivros" />
        </h:commandButton>
    </h:form>

    <h:dataTable value="#{livroBean.livros}" var="livro" id="tabelaLivros">
        <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="#{libro.isbn}" />
        </h:column>
        <h:column>
            <f:facet name="header">Preco</f:facet>
            <h:outputText value="#{livro.preco}">
                <f:convertNumber type="currency" pattern="R$ 0.00 "
                    currencySymbol="R$" locale="pt_BR" />
            </h:outputText>
        </h:column>
        <h:column>
            <f:facet name="header">Data</f:facet>
            <h:outputText value="#{livro.datalancamento.time}">
                <f:convertDateTime timeZone="America/Sao_Paulo" pattern="dd/MM/yyyy"></f:convertDateTime>
            </h:outputText>
        </h:column>

    </h:dataTable>
</h:body>

</html>
10 respostas

troca de <f:ajax event="Keypress" render="messages"/>para <f:ajax event="keypress" render="messages"/>

Estava com o mesmo erro! vamos ver se com essa alteração ai ira tirar o erro.

fiz essa alteração e mesmo assim, não funcionou, comecei a fazer o exerc. desse cap.(criei a classe LogPhaseListener e alterei o faces-config.xml) e está aparecendo o seguinte erro:

Hibernate: select autor0_.id as id1_, autor0_.nome as nome1_ from Autor autor0_
out 11, 2016 9:57:47 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/livraria] threw exception [javax/servlet/jsp/jstl/sql/Result] with root cause
java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.sql.Result
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1722)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1573)
    at javax.faces.component.UIData.getDataModel(UIData.java:1806)
    at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:483)
    at javax.faces.component.UIData.setRowIndex(UIData.java:472)
    at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:82)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
    at javax.faces.component.UIData.encodeBegin(UIData.java:1117)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1777)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:437)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    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:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    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)

Oi Priscila, essa exception ta muito estranha mesmo.. ta fazendo menção a uma tag da jstl que ninguém usa... Você consegui evoluir ou ainda ta presa no erro?

Boa tarde, não consegui sair desse erro, não sei o que posso fazer!

Ola Priscila no seu event você esta usando Keypress coloca o k minusculo keypress provavelmente ira sair do erro

Priscila, tenta adicionar o jaf da jstl no projeto. Ja que ta reclamando da falta de uma classe dele... Mas eh estranho.

Alisson já arrumei o Keypress coloquei em minúsculo, e mesmo assim, continua o erro. Alberto aonde posso conseguir o jar da jstl? obrigada Alissone Alberto.

Copiei seu codigo e usei aqui no meu projeto, mas funcionou. Acredito que possa ser alguma biblioteca mesmo. Conseguiu fazer o que o Alberto falou?