标准行动

时间:2009-06-21 20:07:26

标签: java jsp servlets javabeans

我真的不明白为什么JSP中的以下代码运行正常,但正如Head第一本书所述,它将显示编译时错误。

<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;
  }


  }

为什么它有效?为什么它没有显示任何错误?这本书错了吗?

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

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

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