3
respostas

Erro ao trocar o componente h:outputLabel por p:outputLabel

HTTP Status 500 - Cannot find component for expression "usuarioLogado" referenced from "j_idt13:j_idt14".

type Exception report

message Cannot find component for expression "usuarioLogado" referenced from "j_idt13:j_idt14".

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Cannot find component for expression "usuarioLogado" referenced from "j_idt13:j_idt14".
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
root cause

org.primefaces.expression.ComponentNotFoundException: Cannot find component for expression "usuarioLogado" referenced from "j_idt13:j_idt14".
    org.primefaces.expression.SearchExpressionFacade.cannotFindComponent(SearchExpressionFacade.java:677)
    org.primefaces.expression.SearchExpressionFacade.resolveComponentById(SearchExpressionFacade.java:493)
    org.primefaces.expression.SearchExpressionFacade.resolveComponent(SearchExpressionFacade.java:425)
    org.primefaces.expression.SearchExpressionFacade.resolveComponent(SearchExpressionFacade.java:377)
    org.primefaces.component.outputlabel.OutputLabelRenderer.encodeEnd(OutputLabelRenderer.java:59)
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    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 Apache Tomcat/9.0.0.M15 logs.
3 respostas

Marcelo posta o seu código html que é la que ta o erro, sem a gente ver fica dificil kkk

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

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

        <f:metadata>
            <f:viewParam name="livroId" value="#{livroBean.livroId}"/>
            <f:viewAction action="#{livroBean.carregarLivroPelaId}" if="#{param.livroId != null}"/>
        </f:metadata>

        <ui:define name="titulo">
                Novo Livro
        </ui:define>

        <ui:define name="conteudo">
            <h:form>

                <p:messages id="messages" />
                <p:outputLabel value="Usuário Logado: " for="usuarioLogado" />
                <h:outputText value="#{sessionScope['usuarioLogado'].email}" />
                <p:fieldset legend = "Dados do Livro">
                    <p:panelGrid columns="2">

                        <p:outputLabel value="Titulo:" for="titulo" />
                        <h:inputText id="titulo" value="#{livroBean.livro.titulo}"
                            required="true" requiredMessage="Título obrigatório"
                            validatorMessage="Título não pode ser superior a 40">
                            <f:validateLength maximum="40" />
                            <f:ajax event="blur" render="messages" />
                        </h:inputText>

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

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

                        <p: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>

                    </p:panelGrid>

                </p:fieldset>

                <p:fieldset legend="Dados do Autor">
                    <p: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>

                    <br />

                    <h:commandLink value="Cadastrar novo autor"
                        action="#{livroBean.formAutor}" immediate="true" />

                    <h:dataTable value="#{livroBean.autoresDoLivro}" var="autor" id="tabelaAutores">
                        <h:column>
                            <h:outputText value="#{autor.nome}" />
                        </h:column>
                        <h:column>
                            <h:commandLink value="X" action="#{livroBean.removerAutorDoLivro(autor)}" />
                        </h:column>
                    </h:dataTable>
                </p:fieldset>
                <h:commandButton value="Gravar" action="#{livroBean.gravar}">
                    <f:ajax execute="@form" render="@form :formTabelaLivros:tabelaLivros" />
                </h:commandButton>
            </h:form>

            <h:form id="formTabelaLivros">
                <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="#{livro.isbn}" />
                    </h:column>
                    <h:column>
                        <f:facet name="header">Preço</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 pattern="dd/MM/yyyy"
                                timeZone="America/Sao_Paulo" />
                        </h:outputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">Alterar</f:facet>
                        <h:commandLink value="Alterar" action="#{livroBean.carregar(livro)}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">Remover</f:facet>
                        <h:commandLink value="Remover" action="#{livroBean.remover(livro)}"/>
                    </h:column>
                </h:dataTable>
            </h:form>
        </ui:define>
    </ui:composition>

</html>

Logo abaixo do componente de mensagem você tem o seguinte código:

<p:outputLabel value="Usuário Logado: " for="usuarioLogado" />
<h:outputText value="#{sessionScope['usuarioLogado'].email}" />

O erro acontece pois falta o id no componente outputText.

<p:outputLabel value="Usuário Logado: " for="usuarioLogado" />
<h:outputText id="usuarioLogado" value="#{sessionScope['usuarioLogado'].email}" />