https://issues.apache.org/bugzilla/show_bug.cgi?id=45153
Summary: Javabean not accessible to jsp until placed in a package. Product: Tomcat 6 Version: unspecified Platform: Macintosh OS/Version: Mac OS X 10.4 Status: NEW Severity: normal Priority: P2 Component: Servlet & JSP API AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] I am using version 6.0.16 of tomcat and the problem may be version dependent. The problem I experienced is, if a bean is not contained within a package, the bean is not accessible from a JSP. Without a package specified in the bean class and with the bean class file in the classes folder, the following exceptions occurred. The condition was not resolved until a "package foo;" statement was added to the bean class and the class file was placed in the "classes/foo" folder. This is the error when the useBean standard action was used: SEVERE: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: /testJSTL3.jsp(12,0) The value for the useBean class attribute TestBean1 is invalid. at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40) ... This is the error when a scriptlet was used: SEVERE: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 7 in the jsp file: /testJSTL3.jsp TestBean1 cannot be resolved to a type 4: <% 5: String [] movieList = {"Amelie", "Returrn of the King", "Mean Girls"}; 6: request.setAttribute("movieList", movieList); 7: TestBean1 myBean = new TestBean1(); This is the error when the page directive and import attribute were used in the jsp. SEVERE: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 6 in the generated java file The import TestBean1 cannot be resolved The following is a failing version of the code: TestBean1.java: public class TestBean1 { private String prop1; private int prop2; public TestBean1() { } public String getProp1() { return prop1; } public void setProp1(String newProp) { prop1 = newProp; } public int getProp2() { return prop2; } public void setProp2(int newProp) { prop2 = newProp; } } testBean.jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="TestBean1" %> <html><body> <% String [] movieList = {"Amelie", "Returrn of the King", "Mean Girls"}; request.setAttribute("movieList", movieList); TestBean1 myBean2 = new TestBean1(); myBean2.setProp1("This is a String a myBean property"); myBean2.setProp2(87654321); request.setAttribute("myBean2", myBean2); %> <jsp:useBean id="myBean" class="TestBean1" scope="request" /> <jsp:setProperty name="myBean" property="prop1" value="This is a String property." /> <jsp:setProperty name="myBean" property="prop2" value="12345678" /> <%-- forEach looks through scope maps for attribute specified in items attribute --%> <table> <c:forEach var="s" items="${movieList}" varStatus="movieNum"> <tr><td>Movie ${movieNum.count}: ${s}</td></tr> </c:forEach> <tr><td>Prop1: ${myBean.prop1}</td></tr> <tr><td>Prop2: ${myBean.prop2}</td></tr> <tr><td>Last Row</td></tr> </table> </body></html> The following is a working version of the code: TestBean1.java: package foo; public class TestBean1 { private String prop1; private int prop2; public TestBean1() { } public String getProp1() { return prop1; } public void setProp1(String newProp) { prop1 = newProp; } public int getProp2() { return prop2; } public void setProp2(int newProp) { prop2 = newProp; } } testBean.jsp: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="foo.TestBean1" %> <html><body> <% String [] movieList = {"Amelie", "Returrn of the King", "Mean Girls"}; request.setAttribute("movieList", movieList); TestBean1 myBean2 = new foo.TestBean1(); myBean2.setProp1("This is a String a myBean property"); myBean2.setProp2(87654321); request.setAttribute("myBean2", myBean2); %> <jsp:useBean id="myBean" class="foo.TestBean1" scope="request" /> <jsp:setProperty name="myBean" property="prop1" value="This is a String property." /> <jsp:setProperty name="myBean" property="prop2" value="12345678" /> <%-- forEach looks through scope maps for attribute specified in items attribute --%> <table> <c:forEach var="s" items="${movieList}" varStatus="movieNum"> <tr><td>Movie ${movieNum.count}: ${s}</td></tr> </c:forEach> <tr><td>Prop1: ${myBean.prop1}</td></tr> <tr><td>Prop2: ${myBean.prop2}</td></tr> <tr><td>Last Row</td></tr> </table> </body></html> -- Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]