Cannot find bean book in any scope

20 respostas
C

:shock: Pessoal não consegui tirar esse bug, por favor alguém que tiver experiência… Desde de já grato pela atenção

HTTP Status 500 -


type Exception report

message

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

exception

javax.servlet.ServletException: Cannot find bean  book in any scope

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)

org.apache.jsp.jsp.bookList_jsp._jspService(bookList_jsp.java:228)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)

org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)

javax.servlet.http.HttpServlet.service(HttpServlet.java:697)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

root cause

javax.servlet.jsp.JspException: Cannot find bean  book in any scope

org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:934)

org.apache.struts.taglib.TagUtils.computeParameters(TagUtils.java:188)

org.apache.struts.taglib.html.LinkTag.calculateURL(LinkTag.java:440)

org.apache.struts.taglib.html.LinkTag.doStartTag(LinkTag.java:341)

org.apache.jsp.jsp.bookList_jsp._jspx_meth_html_link_1(bookList_jsp.java:488)

org.apache.jsp.jsp.bookList_jsp._jspx_meth_logic_empty_1(bookList_jsp.java:461)

org.apache.jsp.jsp.bookList_jsp._jspService(bookList_jsp.java:161)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)

org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)

javax.servlet.http.HttpServlet.service(HttpServlet.java:697)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.25 logs.

20 Respostas

F

vc não deve estar setando o atributo com o nome ‘book’ no request, ou no escopo que vc ta utilizando.
Verifique se tem alguma instrução do tipo: request.setAttribute(“book”,object);

C

Kara tava funcionando q era uma blz… e começou a dar esse xabu…

Fabrício tente me auxiliar aki… veja a situação, o que vc me pediu para olhar quanto ao setAttribute… acredito q esteja passando isto através da Action não é isto?

====> Tenho meu BookListForm.java

/*

  • @param book The book to set.
  • Popula a variável array com livros
  • */
    public void setBooks(Book[] bookValues){
    this.book = bookValues;
    }

ele se encarrega de gravar o minha lista de livros

====> Tenho meu BooListAction.java

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

{

BookListForm bookListForm = (BookListForm) form;
// Cria uma instäncia da camada de negócios (get a busines logic)
LibraryManager libraryManager = new LibraryManager();	
// salva o Array de Livros retornados pelo método localizado no form Bean
bookListForm.setBooks(libraryManager.getAllBooks());
			 
// retorno através de um forward para saída em um jsp
	return mapping.findForward("showList");
}

====> Tenho meu BookList.jsp
<%-- start with an iterate over the collection books --%>
<logic:iterate name=“bookListForm” property=“books” id=“book”>

F

corbit:
Kara tava funcionando q era uma blz… e começou a dar esse xabu…

Fabrício tente me auxiliar aki… veja a situação, o que vc me pediu para olhar quanto ao setAttribute… acredito q esteja passando isto através da Action não é isto?

====> Tenho meu BookListForm.java

/*
 * @param book The book to set. 
 * Popula a variável array com livros
 * */
public void setBooks(Book[] bookValues){
	this.book = bookValues;
}

ele se encarrega de gravar o minha lista de livros

====> Tenho meu BooListAction.java
public ActionForward execute(
	ActionMapping mapping,
	ActionForm form,
	HttpServletRequest request,
	HttpServletResponse response) 
{
	BookListForm bookListForm = (BookListForm) form;
		
		
                 // Cria uma instäncia da camada de negócios (get a busines logic)
	LibraryManager libraryManager = new LibraryManager();	
	// salva o Array de Livros retornados pelo método localizado no form Bean
	bookListForm.setBooks(libraryManager.getAllBooks());
				 
	// retorno através de um forward para saída em um jsp
		return mapping.findForward("showList");
	}


====> Tenho meu BookList.jsp
<%-- start with an iterate over the collection books --%>
<logic:iterate name="bookListForm" property="books" id="book">


não gosto muito do Struts não … mas vou tentar te ajudar .
tente fazer isso na sua action
request.setAttribute(“books”, libraryManager.getAllBooks());
e diz se funcionou.

C

kara deu o mesmo erro:
javax.servlet.ServletException: Cannot find bean book in any scope

veja como ficou o código depois da inclusão do request

// Cria uma instäncia da camada de negócios (get a busines logic)

LibraryManager libraryManager = new LibraryManager();	

// salva o Array de Livros retornados pelo método localizado no form Bean

bookListForm.setBooks(libraryManager.getAllBooks());	

request.setAttribute(books, libraryManager.getAllBooks()); 			

// retorno através de um forward para saída em um jsp

return mapping.findForward(showList);
C

Sobe!!! Fabrício e o pessoal do guj… dê uma força aí que travei legal!!!

F

mostre seu jsp ai

C

Dê uma força aí amigo… valews!!!

======> Veja o xml

<action forward="/jsp/index.jsp" path="/default" unknown="true"/>

<action
  attribute="bookListForm"
  input="/form/bookList.do"
  name="bookListForm"
  path="/bookList"
  scope="session"
  type="de.laliluna.library.strtus.action.BookListAction">
  <forward name="showList" path="/jsp/bookList.do" />
</action>

======> Veja o jsp:

<%@ page language=“java”%>
<%@ taglib uri=“http://jakarta.apache.org/struts/tags-bean” prefix=“bean”%>
<%@ taglib uri=“http://jakarta.apache.org/struts/tags-html” prefix=“html”%>
<%@ taglib uri=“http://jakarta.apache.org/struts/tags-logic” prefix=“logic”%>

Show book list
<body>	
	<table border="1">	
<tbody>

<%-- set the header --%>
<tr>
	<td>Author</td>
	<td>Book name </td>
	<td>Borrowing allowed</td>
	<td>Borrow by</td>
	<td>&nbsp;</td>
	<td>&nbsp;</td>
	<td>&nbsp;</td>
</tr>

<%-- start with an iterate over the collection books --%>
<logic:iterate name="bookListForm" property="books" id="book">
<tr>
	<%-- book informations --%>
	<td><bean:write name="book" property="author"/> </td>
	<td><bean:write name="book" property="title"/> </td> :shock:
T

Tenta colocar a tua lista na sessão!

HttpSession session = request.getSession();
    session.setAttribute("book", new LibraryManager().getAllBooks());
C

thiago vc me passo este código pelo menos paraou de dar a temível mensagem: Cannot find bean book in any scope… o fato é que ele não está conseguindo popular a collection na jsp pelo setAtributte pq uso o patter do Struts com o taglib…<logic:iterate name=“bookListForm” property=“books” id=“book”>.

O fato é que ele mostra a jsp… e não carrega os dados…!? O q fazer? Kara tô perdidão… manda um foco de luz aí… :oops: valews a força…

C

O negócio é como faço para recuperar esta sessão lá no meu Jsp… estou usando o struts e o conceito de ActionForm…

os livros precisam ser persistidos em um “bookListForm”, e depois iterado para construir a tabela com os livros usando a taglib…

A tabela aparece vazia… como não mandei gravar usando o método setBook do bookListForm… não tem jeito de iterar construindo a tabela… o objeto tá na session … ok fazer?

C

Desculpem, o que fazer?

C

Sobe!

T
<logic:iterate id="b" name="book">
    <bean:write name="b" property="algumaPropriedadeDoTeuActionForm"/>
</logic>
C

Esse poste parece q não vai ter fim… etha se descobrir este bug tudo resolve para mim… thiago vê se dá um força aí … Postei com comentários o meu código… fiz o q vc pediu só q peguei o msm erro:

“Cannot find bean book in any scope”, de qquer forma obrigado!

J

Depois dessa salada toda de posts, vamos lá então…

Primeiro, verifique se realmente o seu book está na sessão com isso:

<logic:present name=“book” scope=“session”>
TÁ NA SESSÃO !!!
</logic:present>

<logic:notPresent name=“book” scope=“session”>
NÃO TÁ NA SESSÃO !!!
</logic:notPresent>

É perigoso usar qualquer acesso à estruturas em sessão sem testar primeiro justamente pra evitar esse tipo de erro.

Faça isso, depois conta aí…

C

Muito sensato o que vc disse Juliano, vou testar aki… vou postar após as 21:00 valews… aí!!!

C

Postei este código que tú passou logo no início da jsp… e a msg q apareceu: cannot find bean book… tô achando q nem a jsp ele carregou na verdade…!? :oops:

J

Vá lá no diretório

C:\Tomcat50\work\Catalina\localhost<suaAplicacao>\org\apache\jsp

e edite o arquivo bookList_jsp.java gerado após a compilação do JPS e veja o local do erro, linha 22.

org.apache.jsp.jsp.bookList_jsp._jspService(bookList_jsp.java:22: )

Esse erro poderia ser causado também pelo Struts não ter achado o campo book no seu form declarado la no xml.

Mas pelo que eu vi você não usa nenhum campo html:text... de property chamado book não é?? Senão essa é a causa justamente por que na declaração de suas actions não tem nenhum campo book no forms.

Cara, vai dando uma analisada aí com calma por que pelo que notei você deve ter copiado esse exemplo de algum lugar e agora tá tentando fazer rodar.

F

ou tente apagar o cache (pasta da sua apliacacao dentro do diretorio work, no tomcat)

R

Caro Juliano… este realmente é um exemplo q peguei de um site… mas ele tava funcionando redondo… eu mesmo digitei todo o código…

o book aí citado é uma collection… ela foi populada… só q quando carregado na estrutura do struts dá esse xabu … sou novo em struts e estou aprendendo… só q este erro tá me matando…

vou dar uma checada aki… mas valeu aí Juliano e Fabrício pela força … vou ver aki depois eu posto…

Criado 15 de abril de 2006
Ultima resposta 19 de abr. de 2006
Respostas 20
Participantes 5