jsf2托管bean多个范围

时间:2012-09-17 06:30:47

标签: java-ee jsf-2 javabeans

假设我们有一个类似

的bean
@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的范围?)。

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

1 个答案:

答案 0 :(得分:1)

类注释特定于类本身,并且在子类化时它们将被丢弃。根据您的要求,CategoriesDetailedBean已经继承了getId()setId()这两种方法。它们不会在不同的范围内神奇地运行,也不会保存不同实例的值。

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

另见: