0

我真的不明白为什么 JSP 中的以下代码运行良好,但正如 Head first book 中所述,它会显示编译时错误。

<html><body>

<jsp:useBean id="person" type="foo.Person"  scope="request">
<jsp:setProperty name="person" property="name" value="Fred"/>
 </jsp:useBean>
 <jsp:getProperty name="person" property="name"/>

</body></html>

Person类的代码是:

 package foo;

public class Person extends foo.Person1
{
private String s;

public void setEmpID(String s)
{
  this.s=s;
  }
  public String getEmpID()
  {
     return s;
  }


  }

在 servlet 类中实例化 foo.Person 并将其设置为请求范围内的属性“Person”的代码是:

Person1 p=new Person();
p.setName("Greenhorn");
request.setAttribute("person",p);

Person1 bean 类的代码是:

package foo;

 public abstract class Person1
{


private String s;

public void setName(String s)
{
  this.s=s;
  }
  public String getName()
  {
     return s;
  }


  }

为什么它在工作?为什么它没有显示任何错误?书错了吗?

提前感谢您的任何建议。

4

1 回答 1

0

我查了书。在第 354 页,它将 Person 更改为抽象类并创建 Employee 的子类以说明如何指定 useBean 的 type 属性。type 参数告诉页面稍后使用哪个类作为引用。class 属性告诉页面要实例化什么对象。

编辑:在第 356 页上,黑框状态:“如果使用的类型没有类 bean 必须已经存在。” 本书示例中的范围是页面而不是请求。

于 2009-06-21T20:28:59.737 回答