首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><jsp:useBean>错误: Bean不能解析为类型

问<jsp:useBean>错误: Bean不能解析为类型
EN

Stack Overflow用户
提问于 2013-06-08 23:26:59
回答 2查看 5.6K关注 0票数 3

我试图了解Javabean是如何工作的,因此我创建了一个简单的 JSP 项目,其中包含InfoRet.java (Javabean)和一个用于从bean检索值的JSP文件。

这是代码:

代码语言:javascript
复制
public class InfoRet implements java.io.Serializable {

  private static final long serialVersionUID = 1L;
  private String name;
  private int age;

  public InfoRet() {
  }
  public String getname() {
    return this.name;
  }
  public int getage() {
    return this.age;
  }
  public void setname(String name) {
    this.name = name;
  }
  public void setage(int age) {
    this.age = age;
  }
}

这是JSP文件:

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    <jsp:useBean id="obj" class="InfoRet" scope="session"></jsp:useBean>
  </head>

  <body>
    <jsp:setProperty name="obj" property="name" value="harshal" />
    <jsp:setProperty name="obj" property="age" value="323" />
    <jsp:getProperty name="obj" property="name" />
    <br/>
    <jsp:getProperty name="obj" property="age" />
  </body>

</html>

这些错误是:

代码语言:javascript
复制
    org.apache.jasper.JasperException: Unable to compile class for JSP: 

    An error occurred at line: 8 in the jsp file: /indexs.jsp
    InfoRet cannot be resolved to a type
    5: <head>
    6: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    7: <title>Insert title here</title>
    8: <jsp:useBean id="obj" class="InfoRet" scope="session" ></jsp:useBean>
    9: </head>
    10: <body>
    11: <jsp:setProperty name="obj" property="name"  value="harshal"/>


    An error occurred at line: 8 in the jsp file: /indexs.jsp
    InfoRet cannot be resolved to a type
    5: <head>
    6: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    7: <title>Insert title here</title>
    8: <jsp:useBean id="obj" class="InfoRet" scope="session" ></jsp:useBean>
    9: </head>
    10: <body>
    11: <jsp:setProperty name="obj" property="name"  value="harshal"/>


    An error occurred at line: 8 in the jsp file: /indexs.jsp
    InfoRet cannot be resolved to a type
    5: <head>
    6: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    7: <title>Insert title here</title>
    8: <jsp:useBean id="obj" class="InfoRet" scope="session" ></jsp:useBean>
    9: </head>
    10: <body>
    11: <jsp:setProperty name="obj" property="name"  value="harshal"/>


    An error occurred at line: 14 in the jsp file: /indexs.jsp
    InfoRet cannot be resolved to a type
    11: <jsp:setProperty name="obj" property="name"  value="harshal"/>
    12: <jsp:setProperty name="obj" property="age"  value="323" />
    13: 
    14: <jsp:getProperty  name="obj"  property="name"/>
    15: <br/>
    16: <jsp:getProperty name="obj" property="age"/> 
    17: </body>


    An error occurred at line: 14 in the jsp file: /indexs.jsp
    InfoRet cannot be resolved to a type
    11: <jsp:setProperty name="obj" property="name"  value="harshal"/>
    12: <jsp:setProperty name="obj" property="age"  value="323" />
    13: 
    14: <jsp:getProperty  name="obj"  property="name"/>
    15: <br/>
    16: <jsp:getProperty name="obj" property="age"/> 
    17: </body>


    An error occurred at line: 16 in the jsp file: /indexs.jsp
    InfoRet cannot be resolved to a type
    13: 
    14: <jsp:getProperty  name="obj"  property="name"/>
    15: <br/>
    16: <jsp:getProperty name="obj" property="age"/> 
    17: </body>
    18: </html>


    An error occurred at line: 16 in the jsp file: /indexs.jsp
    InfoRet cannot be resolved to a type
    13: 
    14: <jsp:getProperty  name="obj"  property="name"/>
    15: <br/>
    16: <jsp:getProperty name="obj" property="age"/> 
    17: </body>
    18: </html>


    Stacktrace:
        org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
        org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
        org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

所以我想知道上面的代码有什么问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-08 23:37:15

我猜您的问题是类InfoRet位于默认包中(也就是说,它不在您创建的命名包中)。默认包中的类对于命名包中的其他类(如JSP )是不可见的。

因此,您必须将您的课程放在一个包中:

代码语言:javascript
复制
package com.your.package;

public class InfoRet implements java.io.Serializable {
  //...
}

然后在JSP中使用它:

代码语言:javascript
复制
<jsp:useBean id="obj" class="com.your.package.InfoRet" scope="session" />
票数 3
EN

Stack Overflow用户

发布于 2015-03-13 17:17:02

是的,您必须创建一个单独的java包,然后在该包中创建一个新的java类。之后,只需对<jsp:useBean class="yournewpackage.yourclassname">进行更改

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17004913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档