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

Problemapara direcionar o Link - Aula Criando o Detalhe do Livro

Pessoal, estou com problema para direcionar o link abaixo. Já importei o livro-detalhe e já inclui os id'S na classe Livro. Alguém sabe o que pode ser?

Erro gerado

Context Path:/casadocodigo
Servlet Path:/livro-detalhe.xhtml
Path Info:null
Query String:id=104
Stack Trace
javax.servlet.ServletException: /livro-detalhe.xhtml @9,58 value="#{livroDetalheBean.id}": Target Unreachable, identifier 'livroDetalheBean' resolved to null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
8 respostas

Oi Ana, tudo bem? Você pode passar o código do seu xhtml e o do Bean?

Olá Samir. Tudo bem e você?

Qual Bean quer que eu apresento ? AdminListaLivrosBean.java / AdminLivrosBean.java / HomeBean.java

Segue xhtml do index somente a parte que pedem para alterarem


<section class="vitrineDestaquinho container">
    <h2 class="vitrineDestaquinho-titulo">Últimos lançamentos</h2>
    <ul class="vitrineDestaquinho-lista">    


        <ui:repeat value="#{homeBean.ultimosLancamentos()}" var="livro">

        <li class="livroNaVitrine vitrineDestaquinho-produto">
            <a href="#{request.contextPath}/livro-detalhe.xhtml?id=#{livro.id}" class="livroNaVitrine-link"
                    title="#{livro.titulo}">
                <div class="livroNaVitrine-imagemContainer" role="presentation" >
                    <img class="livroNaVitrine-imagem" 
                        src="#{request.contextPath}/file/#{livro.capaPath}" 
                            alt="#{livro.titulo}" title="#{livro.titulo}" />
                </div>
                <span class="livroNaVitrine-nome">#{livro.titulo}</span>
            </a>
        </li>
        </ui:repeat>

    </ul>
</section>


<h3 class="homeCall container">Todos os nossos livros</h3>

<section class="vitrineDaColecao container">
    <ul class="vitrineDaColecao-lista">
        <ui:repeat value="#{homeBean.demaisLivros()}" var="livro">
        <li class="livroNaVitrine vitrineDaColecao-produto">
            <a href="#{request.contextPath}/livro-detalhe.xhtml?id=#{livro.id}" class="livroNaVitrine-link" 
                title="#{livro.titulo}">
                <div class="livroNaVitrine-imagemContainer" role="presentation">
                    <img class="livroNaVitrine-imagem" 
                        src="#{request.contextPath}/file/#{livro.capaPath}" 
                        alt="#{livro.titulo}" title="#{livro.titulo}" />
                </div>
                <span class="livroNaVitrine-nome">#{livro.titulo}</span>
            </a>
        </li>
        </ui:repeat>
    </ul>
</section>

Segue xhml do livro-detalhe

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:xlink="http://www.w3.org/1999/xlink">

<f:metadata>
    <f:viewParam  name="id" value="#{livroDetalheBean.id}" />
    <f:viewAction action="#{livroDetalheBean.carregaDetalhe()}" />
</f:metadata>


<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="viewport" content="width=device-width" />
    <link rel="shortcut icon" href="#{request.contextPath}/resources/imagens/favicon.ico" type="image/ico" />
    <link href="https://plus.google.com/108540024862647200608" rel="publisher" />

    <title>#{livroDetalheBean.livro.titulo} - Casa do Código</title>
solução!

Oi Ana, tudo bem também =).

o Bean que está aparecendo como null no log é livroDetalheBean. Eu precisaria dar uma olhada nele.

Obrigada !

oi Ana, o problema é justamente o bean não estar criado.

Stack Trace
javax.servlet.ServletException: /livro-detalhe.xhtml @9,58 value="#{livroDetalheBean.id}": Target Unreachable, identifier 'livroDetalheBean' resolved to null

no log ele diz que ao tentar acessar esse bean, ele acessou um objeto nulo e por isso deu problema.

obrigada

Oi Ana.

O link disponibilizado do arquivo detalhe-livro.xhtml já está usando o Bean que não foi criado no curso, por isso temos essa impressão que ele está adiantando as coisas.

Acho que o instrutor não queria que os alunos preenchesse esse xhtml gigantesco =] .

abraço

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