Hi patrick,
What is the package name for your bean and dao.
Please have a fresh look at package name u have specified for bean and dao.
U are accessing the page thru http://localhost:port/list.do. Am i right.
Check it "scope="request" including in your mapping in struts-config.xml file.
-----Original Message-----
From: AKEDJO Guy-Patrick [mailto:[EMAIL PROTECTED]]
Sent: Saturday, July 03, 2004 8:52 AM
To: [EMAIL PROTECTED]
Subject: javax.servlet.ServletException: Cannot find bean dblist in scope request
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="" 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.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]