I've been trying to solve that issue for 3 days now I went also to the Net trying to find all information related to this but no way. I tried everything I know and all I found out but the error still the same. Can you help me please. Here are some information you need to check my code. ============================= The error message===================== javax.servlet.ServletException: Cannot find bean dblist in scope request org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800) org.apache.jsp.form.list_jsp._jspService(list_jsp.java:129) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause javax.servlet.jsp.JspException: Cannot find bean dblist in scope request org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:940) org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:277) org.apache.jsp.form.list_jsp._jspService(list_jsp.java:85) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) ====================Action class XML config================ <action path="/list" type="com.youcompany.struts.action.ListAction" validate="false"> <forward name="listok" path="/form/list.jsp" /> </action> ========================my Action class================== package com.youcompany.struts.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.youcompany.struts.bean.*; import javax.sql.*; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import java.util.ArrayList; import java.util.Collection; public class ListAction extends Action { // --------------------------------------------------------- Instance Variables // --------------------------------------------------------- Methods /** * Method execute * @param ActionMapping mapping * @param ActionForm form * @param HttpServletRequest request * @param HttpServletResponse response * @return ActionForward * @throws Exception */ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // throw new UnsupportedOperationException("Generated method 'execute(...)' not implemented."); // Get the datasource ActionErrors errors = new ActionErrors(); DatabaseDVDManager DAOdvd = new DatabaseDVDManager(); DataSource dataSource = (DataSource)servlet.getServletContext().getAttribute("org.apache.struts.action.DATA_SOURCE"); Collection c = new ArrayList(); try { // connection DAOdvd.setDataSource(dataSource); c = DAOdvd.getAll(); } catch (DAOException e) { // Message for the user: errors.add("label", new ActionError("error.listfailed")); saveErrors(request, errors); // Logging the error: String message = "DVDs could not be listed"; // Save the chained exceptions: request.setAttribute("MYEXCEPTION", new DAOException(message, e)); } request.setAttribute("dblist",c); return (mapping.findForward("listok")); } } ===================================My Jsp for the view ============== <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <h2>DVD library</h2> <p> Click on Id to edit DVD.</p> <table border=1 bgcolor="#FFFFCC"> <tr> <th>Id</th> <th>Title</th> </tr> <logic:iterate id="dvd" name="dblist" scope="request" type="com.youcompany.struts.bean.DVD"> <tr> <td><a href="list.do?id=<bean:write name="dvd" property="id"/>"> <bean:write name="dvd" property="id"/></a></td> <td><bean:write name="dvd" property="title"/></td> </tr> </logic:iterate> </table> =============My DVD bean:========================== import java.io.Serializable; /* * This a bean - and also a Value - or Data Transfer Object */ public class DVD implements Serializable { private String id; private String title; public DVD() { } public DVD(String id, String title) { setId(id); setTitle(title); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } ============================my DAO======================== package com.youcompany.struts.bean; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import javax.sql.DataSource; public class DatabaseDVDManager implements DVDManagerIF { private DataSource dataSource; // Contains en Exception when an error has occured private Exception error; // Contains an error message private String message; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void createDVD(String id, String title) throws DAOException { if (getDVD(id) != null) throw new DAOException("Id " + id + " is already used"); Connection conn = null; PreparedStatement pstmt = null; error = null; try { conn = dataSource.getConnection(); // Prepare a statement to insert a record String sql = "INSERT INTO dvd (id, title) VALUES(?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); pstmt.setString(2, title); pstmt.executeUpdate(); } catch (SQLException e) { error = e; message = "Create failed"; } closePrep(pstmt); closeConnection(conn); checkOK(); } public DVD getDVD(String id) throws DAOException { Connection conn = null; PreparedStatement pstmt = null; ResultSet result = null; error = null; DVD dvd = null; try { conn = dataSource.getConnection(); // Prepare a statement to insert a record String sql = "SELECT * FROM dvd WHERE id=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); result = pstmt.executeQuery(); if (result.next()) { String newId = result.getString("id"); String title = result.getString("title"); dvd = new DVD(newId, title); } } catch (SQLException e) { error = e; message = "Read failed"; } closeResult(result); closePrep(pstmt); closeConnection(conn); checkOK(); return dvd; } public void updateDVD(String id, String title) throws DAOException { if (getDVD(id) == null) throw new DAOException("Id " + id + " was not found"); Connection conn = null; PreparedStatement pstmt = null; error = null; try { conn = dataSource.getConnection(); // Prepare a statement to update a record String sql = "UPDATE dvd SET title=? WHERE id=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, title); pstmt.setString(2, id); pstmt.executeUpdate(); } catch (SQLException e) { error = e; message = "Update failed"; } closePrep(pstmt); closeConnection(conn); checkOK(); } public void deleteDVD(String id) throws DAOException { if (getDVD(id) == null) throw new DAOException("Id " + id + " was not found"); Connection conn = null; PreparedStatement pstmt = null; error = null; try { conn = dataSource.getConnection(); // Prepare a statement to delete a record String sql = "DELETE FROM dvd WHERE id=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); pstmt.executeUpdate(); } catch (SQLException e) { error = e; message = "Delete failed"; } closePrep(pstmt); closeConnection(conn); checkOK(); } public Collection getAll() throws DAOException { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; error = null; Collection c = new ArrayList(); try { conn = dataSource.getConnection(); // Prepare a statement to list a record String sql = "SELECT * FROM dvd"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(sql); while (rs.next()) { String id = rs.getString("id"); String title = rs.getString("title"); DVD dvd = new DVD(id, title); c.add(dvd); } } catch (SQLException e) { error = e; message = "Getall failed"; } closeResult(rs); closePrep(pstmt); closeConnection(conn); checkOK(); return c; } public Collection findDVDTitle(String findTitle) throws DAOException { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; error = null; Collection c = new ArrayList(); try { conn = dataSource.getConnection(); // Prepare a statement to find a record String sql = "SELECT * FROM dvd"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(sql); while (rs.next()) { String id = rs.getString("id"); String title = rs.getString("title"); DVD dvd = new DVD(id, title); if (dvd.getTitle().toUpperCase().indexOf(findTitle.toUpperCase()) > -1) { c.add(dvd); } } } catch (SQLException e) { error = e; message = "Find failed"; } closeResult(rs); closePrep(pstmt); closeConnection(conn); checkOK(); return c; } private void checkOK() throws DAOException { if (error != null) { throw new DAOException(message, error); } } private void closeConnection(Connection connection) { if (connection != null) { try { connection.close(); } catch (SQLException e) { if (error == null) { error = e; message = "Close conn failed"; } } } } private void closePrep(PreparedStatement prep) { if (prep != null) { try { prep.close(); } catch (SQLException e) { if (error == null) { error = e; message = "Close prep failed"; } } } } private void closeResult(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { if (error == null) { error = e; message = "Close result failed"; } } } } } Best regards --------------------------------- Do you Yahoo!? Yahoo! Mail - You care about security. So do we.