Стандартное действие - PullRequest
0 голосов
/ 22 июня 2009

Я действительно не понимаю, почему следующий код в JSP работает нормально, но как описано в первой книге главы, он покажет ошибку времени компиляции.

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


  }

и код для создания экземпляра foo.Person в классе сервлета и установки его в качестве атрибута «Person» в области действия запроса:

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

и код Person1 класс бобов:

package foo;

 public abstract class Person1
{


private String s;

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


  }

Почему это работает? почему это не показывает какую-либо ошибку? Книга не так?

Заранее спасибо за любые предложения.

1 Ответ

0 голосов
/ 22 июня 2009

Я проверил книгу. На странице 354 он меняет Person на абстрактный класс и создает подкласс Employee, чтобы проиллюстрировать, как вы можете указать атрибут type элемента useBean. Параметр type сообщает странице, какой класс использовать позже в качестве ссылки. Атрибут class сообщает странице, какой объект устанавливать.

Редактировать: На странице 356 черный ящик гласит: «Если тип используется без компонента класса, он уже должен существовать» Область действия в примере книги - страница вместо запроса.

...