【问题标题】:JavaBean 'value for the useBean class attribute classes.UserData is invalid' [duplicate]JavaBean 'useBean 类属性 classes.UserData 的值无效' [重复]
【发布时间】:2009-06-01 02:05:49
【问题描述】:

我有两个不工作的 JSP 和一个 JavaBean。我正在使用Tomcat 6.0。第一个 JSP 是 GetName.jsp,位于 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>

第二个JSP是NextPage.jsp,位于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>

我的JavaBean,UserData,编译正确,class文件位于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; }
}

我的 web.xml 文件中还有以下内容,位于 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>

我的 Google 搜索建议与类路径有关。我的类路径当前是 .;C:\Tomcat\lib\servlet-api.jar。

当我在 GetName.jsp 中输入信息并单击按钮时,Tomcat 会为我提供 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)

我可以发誓我做的一切都是正确的,但显然我不是。在我把头发都扯掉之前,有人能告诉我怎么了吗?提前致谢。

【问题讨论】:

    标签: java attributes javabeans


    【解决方案1】:

    您需要在 NextPage.jsp 文件中设置 bean 属性。

    像这样在你的 useBean 语句之后添加以下行。

    <jsp:useBean id="user" class="UserData" scope="session"/>
    <jsp:setProperty name="user" property="*" /> 
    

    【讨论】:

    • 添加这个最终使一切正常。谢谢你,威尔先生。
    【解决方案2】:

    问题是您的UserData.class 文件位于错误的目录中,这意味着UserData.class 实际上应该在webapps/app1/WEB-INF/classes/classes/UserData.class 中。

    【讨论】:

      【解决方案3】:

      编译java文件“UserData.java”后,会得到一个类文件="UserData.class"。确保UserData.class位于User类下。 即文件UserData.java和UserData.class的位置必须是-

      ..\Tomcat6.0\webapps\ROOT\WEB-INF\classes\UserData.java 和 ..\Tomcat6.0\webapps\ROOT\WEB-INF\classes\UserData.class

      如果 WEB-INF 中没有“classes”,您可以创建一个名为“classes”的新文件夹来存储这些文件。重新启动 tomcat 以查看更改。

      【讨论】:

        【解决方案4】:

        问题似乎是您将类引用为一个包。不是,是war中类的根目录。

        从您的类中删除 package 行,并将您的 bean 称为 class="UserData" 看看会发生什么。

        【讨论】:

        • 我试过这个。这是Tomcat告诉我的。 org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 in the jsp file: /NextPage.jsp UserData cannot be resolve to a type 1: 2: 3: 4: 你输入了
        猜你喜欢
        • 2010-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        • 2013-11-04
        相关资源
        最近更新 更多