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

erro Aula 3 JSF II

Após modificar a página autor.xhtml, inserindo os componentes primefaces está dando erro quando tento carregar a página. segue erro:

ype Exception Report

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

java.lang.NullPointerException
    br.com.caelum.livraria.bean.AutorBean.remover(AutorBean.java:48)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    javax.el.BeanELResolver.invoke(BeanELResolver.java:158)
    javax.el.CompositeELResolver.invoke(CompositeELResolver.java:79)
    org.apache.el.parser.AstValue.getValue(AstValue.java:159)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:228)
    com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:161)
    com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77)
    com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
    com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
    javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/9.0.0.M26

Estava funcionando normal, pois o projeto vem desde do curso jsf I. Alguém pode ajudar?

2 respostas

Bom dia Anderson, poderia postar seu código por favor ?

solução!

Bom dia Guilherme!!! Segue o código

<?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://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<ui:composition template="_template.xhtml">

    <f:metadata>
        <f:viewParam name="autorId" value="#{autorBean.autorId}" />
        <f:viewAction action="#{autorBean.carregarAutorPelaId}"
            if="#{param.autorId != null}" />
    </f:metadata>
    <p:outputPanel>Novo Autor</p:outputPanel>

    <ui:define name="conteudo">
        <h:form id="autor">
            <p:fieldset legend="Dados do Autor">

                <p:panelGrid columns="3">

                    <p:outputLabel value="Nome:" for="nome" />
                    <p:inputText id="nome" value="#{autorBean.autor.nome}"
                        required="true">
                        <f:validateLength minimum="5" />
                        <f:ajax event="blur" render="messageNome" />
                    </p:inputText>
                    <p:message for="nome" id="messageNome" />

                    <p:outputLabel value="Email:" for="email" />
                    <p:inputText id="email" value="#{autorBean.autor.email}"
                        required="true" validatorMessage="Insira um email valido">
                        <f:attribute name="type" value="email" />
                        <f:passThroughAttribute name="placeholder" value="Email do autor" />
                        <f:validateRegex pattern=".+@.+" />
                        <f:ajax event="blur" render="messageEmail" />
                    </p:inputText>

                    <p:message for="email" id="messageEmail" />

                    <p:commandButton value="Gravar" action="#{autorBean.gravar}"
                        process="@form" update="@form :formTabelaAutors" />
                </p:panelGrid>
            </p:fieldset>
        </h:form>
        <h:form id="formTabelaAutors">
            <p:dataList value="#{autorBean.autores}" var="autor"
                type="definition">
                <f:facet name="header">
            Autores
        </f:facet>
                <p:commandLink styleClass="ui-icon ui-icon-pencil"
                    style="float:left;margin-right:10px" update=":autor">
                    <f:setPropertyActionListener value="#{autor}"
                        target="#{autorBean.autor}" />
                </p:commandLink>

                <p:commandLink styleClass="ui-icon ui-icon-trash"
                    style="float:left;margin-right:10px"
                    action="#{autorBean.remover(autor)}" update="@form" />
                    #{autor.nome} - #{autor.email}
    </p:dataList>

        </h:form>
    </ui:define>

</ui:composition>

</html>

Retirei alguns comentários que tinha feito e funcionou... acho que de alguma forma estava lendo meus comentários como código, mas obrigado pela atenção.