File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Struts and the fly likes Cannot find bean in any scope Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "Cannot find bean in any scope" Watch "Cannot find bean in any scope" New topic

Cannot find bean in any scope

E Fontes

Joined: Nov 23, 2007
Posts: 2
Hi Everyone,

I've seen this error posted several times, but I haven't been able to resolve it. I'm trying to get a tutorial to work without much success. The error I'm getting is "Cannot find bean book in any scope". Can someone please take a look at this and let me know what the problem might be. I appreciate any and all responses.

****** bookList.jsp ******

<logic:notEmpty name="bookListForm" property="books">
<logic:iterate name="bookListForm" property="books" id="books">
<%-- print out the book information --%>
<td><bean:write name="book" property="author"/></td>
<td><bean:write name="book" property="title"/></td>
<td><html:checkbox disabled="true" name="book" property="available"/></td>
<%-- print out the edit and delete link for each book --%>
<html:link action="" paramName="book" paramProperty="id" paramId="id">Edit</html:link>
<html:link action="" paramName="book" paramProperty="id" paramId="id">Delete</html:link>

****** ActionForm *******

public class BookListForm extends ActionForm {

private Collection books;

//get the collection of books
public Collection getBooks() {
return books;

public void setBooks(Collection books) {
this.books = books;

public void reset(ActionMapping mapping, HttpServletRequest request) {
books = new ArrayList();

******* Action class **********

public class BookListAction extends Action {

public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {

BookListForm bookListForm = (BookListForm) form;

//init SimulateDB class and set some dummy data
SimulateDB simulateDB = new SimulateDB();

return mapping.findForward("showList");

**** struts-confi.xml *******
<data-sources />

<form-beans >
<form-bean name="bookListForm" type="de.laliluna.tutorial.library.struts.form.BookListForm" />
<form-bean name="bookEditForm" type="de.laliluna.tutorial.library.struts.form.BookEditForm" />

<global-exceptions />

<global-forwards >
<forward name="welcome" path="/" redirect="true" />

<action-mappings >
<action forward="/jsp/index.jsp" path="/default" unknown="true"/>
<action attribute="bookListForm" input="/jsp/bookList.jsp" name="bookListForm" path="/bookList"
scope="request" type="de.laliluna.tutorial.library.struts.action.BookListAction" validate="false">
<forward name="showList" path="/jsp/bookList.jsp" />
<action attribute="bookEditForm" name="bookEditForm" parameter="do" path="/bookEdit" scope="request"
<forward name="showEdit" path="/jsp/bookEdit.jsp" />
<forward name="showList" path="/" redirect="true" />
<forward name="showAdd" path="/jsp/bookAdd.jsp" />

<message-resources parameter="de.laliluna.tutorial.library.struts.ApplicationResources" />

****** error ******

javax.servlet.jsp.JspException: Cannot find bean book in any scope
at org.apache.struts.util.RequestUtils.lookup(
at org.apache.struts.taglib.bean.WriteTag.doStartTag(
at org.apache.jsp.jsp.bookList_jsp._jspx_meth_bean_005fwrite_005f0(


Thank you for any help you can provide.

Jeanne Boyarsky
author & internet detective

Joined: May 26, 2003
Posts: 33102

Welcome to JavaRanch!

There's a typo in this code snippet. The id should be "books", not "book." The id is the variable name of the value for that iteration of the loop. It is referred to as "book" within the loop.

[OCA 8 book] [Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Other Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, TOGAF part 1 and part 2
E Fontes

Joined: Nov 23, 2007
Posts: 2

Your reply was very helpful. You said the id in the code snippet should be "books" and not "book", but actually the id should be "book" and not "books". Your solution pointed me in the right direction and once I changed the id it worked fine.

Thank you for your quick reply.

I agree. Here's the link:
subject: Cannot find bean in any scope
It's not a secret anymore!