这是我的Bean
public class Employee {
private String ID; //员工ID

private String Name; //员工姓名

public void Emplyee(){}

public void setID(String sID){
ID = sID;
}

public String getID(){
return ID;
}

public void setName(String sName){
Name = sName;
}

public String getName(){
return Name;
}}下面是我的Servlet
public class HobbyPage extends HttpServlet{
public void doGet(HttpServletRequest request,
   HttpServletResponse response)
throws IOException,ServletException{
Employee e = new Employee();
e.setID("20090701");
e.setName("myname");request.setAttribute("employee",e);
RequestDispatcher view = 
request.getRequestDispatcher("HobbyPage.jsp");
view.forward(request,response);
}
}下面是我的Jsp中对Bean的使用
<jsp:useBean id="employee" type="com.example.web.Employee" scope="session">
  </jsp:useBean>
  <jsp:getProperty name="employee" property="ID"/>
  <jsp:getProperty name="employee" property="Name"/>问题:
为什么单独读取ID时可以可以顺利读取,可是当把读取Name的部分加上时却出现错误?
一下是错误信息:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Cannot find any information on property 'Name' in a bean of type 'com.example.web.Employee'
org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:836)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1012)
org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:1063)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Generator.generate(Generator.java:3322)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.example.web.HobbyPage.doGet(HobbyPage.java:17)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.

解决方案 »

  1.   

    声明类的属性的时候请参考一下java规范,应该是开头小写的。
      

  2.   

    先把那两个字段小写,然后这样修改<jsp:useBean id="employee" type="com.example.web.Employee" scope="session"> 
      <jsp:getProperty name="employee" property="id"/> 
      <jsp:getProperty name="employee" property="name"/> 
    </jsp:useBean> 
     
      

  3.   

    5楼的方法是对的,你再试试吧bean的属性命名开头是小写的,在set,get方法的时候,是讲那个属性名的第一个字母大写,所以你在得到那个名字的时候应该是用get后的名字将大写变成小写例如:private String name = null;
         public void setNames(String name){ 
            this.name = name; 
         }      public String getNames(){ 
            return name; 
         } 那你取数据的时候应该用names
      

  4.   


    补充:如果get,set的名字改变,就应该用get,set后面的那个,不是去取的你bean中定义的那个属性名