tag - propiedades java beans
Valor de JavaBean ''para las clases de atributo de clase useBean. UserData no es válido'' (4)
Esta pregunta ya tiene una respuesta aquí:
Tengo dos JSP y un JavaBean que no funcionan. Estoy usando Tomcat 6.0. El primer JSP es GetName.jsp, ubicado en C: / Tomcat / webapps / app1 / GetName.jsp:
<HTML>
<BODY>
<FORM METHOD=POST ACTION="NextPage.jsp">
What''s your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR>
What''s your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR>
What''s your age? <INPUT TYPE=TEXT NAME=age SIZE=4>
<P><INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
El segundo JSP es NextPage.jsp, ubicado en C: / Tomcat / webapps / app1 / NextPage.jsp:
<jsp:useBean id="user" class="classes.UserData" scope="session"/>
<HTML>
<BODY>
You entered<BR>
Name: <jsp:getProperty name="user" property="username" /><BR>
Email: <jsp:getProperty name="user" property="email" /><BR>
Age: <jsp:getProperty name="user" property="age" /><BR>
</BODY>
</HTML>
Mi JavaBean, UserData, compila correctamente, y el archivo de clase se encuentra en C: / Tomcat / webapps / app1 / WEB-INF / classes:
package classes;
import java.io.Serializable;
public class UserData implements Serializable {
String username;
String email;
int age;
public UserData() {
}
public void setUsername( String value )
{
username = value;
}
public void setEmail( String value )
{
email = value;
}
public void setAge( int value )
{
age = value;
}
public String getUsername() { return username; }
public String getEmail() { return email; }
public int getAge() { return age; }
}
También tengo lo siguiente en mi archivo web.xml, ubicado en C: / Tomcat / webapps / app1 / WEB-INF:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
</web-app>
Mis búsquedas de Google sugirieron algo relacionado con el classpath. Mi classpath es actualmente.; C: / Tomcat / lib / servlet-api.jar.
Cuando ingreso información en GetName.jsp y hago clic en el botón, Tomcat me da lo siguiente para NextPage.jsp:
org.apache.jasper.JasperException: /NextPage.jsp(1,1) The value for the useBean class attribute classes.UserData is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1203)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1160)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Generator.generate(Generator.java:3365)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Podría jurar que estoy haciendo todo bien, pero aparentemente no lo estoy haciendo. ¿Podría alguien decirme qué sucede antes de arrancarme todo el pelo? Gracias por adelantado.
El problema es que su archivo UserData.class
está en el directorio incorrecto, lo que significa que UserData.class
debería estar realmente en webapps/app1/WEB-INF/classes/classes/UserData.class
.
El problema parece ser sus clases de referencia como un paquete. No lo es, es el directorio raíz de las clases en la guerra.
elimine la línea del paquete de su clase, y refiérase a su bean como class = "UserData" y vea qué sucede.
Necesita establecer las propiedades del bean en su archivo NextPage.jsp.
Agregue la siguiente línea después de su instrucción useBean como esta.
<jsp:useBean id="user" class="UserData" scope="session"/>
<jsp:setProperty name="user" property="*" />
Después de compilar el archivo java "UserData.java", obtendrá un archivo de clase = "UserData.class". Asegúrese de que UserData.class esté ubicado en Usuario en la clase. es decir, la ubicación del archivo UserData.java y UserData.class debe ser-
.. / Tomcat6.0 / webapps / ROOT / WEB-INF / classes / UserData.java y .. / Tomcat6.0 / webapps / ROOT / WEB-INF / classes / UserData.class
Si "classes" no está presente en WEB-INF, puede crear una nueva carpeta llamada "classes" para almacenar estos archivos. Reinicie tomcat para ver los cambios.