0

假设我们有一个像

@ManagedBean(name = "categoriesbean")
@RequestScoped
public class CategoriesBean { 
      Integer id;
      public Integer getId() { return id;}
      public void setId(Integer idarg) { id = idarg;}
      ...
      ...
}

在同一个应用程序中,我在其他地方

@ManagedBean(name = "categoriesdetailedbean")
@ViewScoped
public class CategoriesDetailedBean extends CategoriesBean { 
      Integer idderived;
      public Integer getIdderived() { return idderived;}
      public void setIdderived(Integer idderivedarg) { idderived = idderivedarg;}
      ...
      ...
}

“categoriesdetailedbean”的范围是什么,它的属性(例如 Id 与 Idderived 的范围?)。

我问的原因是,我看到了一些我似乎不太理解的效果。

4

1 回答 1

1

类注释是特定于类本身的,当您对它进行子类化时它们会被丢弃。根据萨尔多,您CategoriesDetailedBean继承了两种方法getId(),仅setId()此而已。它们不会神奇地在不同的范围内运行,也不会保存不同实例的值。

您对具体的功能要求不是很清楚,因此很难针对您真正想要做的事情发布合适的答案。但如果我猜对了,您实际上想从托管 bean 中访问不同的托管 bean 实例。如果是这样,那么您可以使用@ManagedProperty它。或者您可能想要一个主从视图,在这种情况下您不需要相互注入 bean,但最好将详细 ID 作为 GET 请求参数传递并用于<f:viewParam>设置它。

也可以看看:

于 2012-09-17T11:06:33.943 回答