获取JSF中@ManagedBean的范围

时间:2015-11-10 14:05:36

标签: jsf jsf-2 javabeans cdi managed-bean

我目前正在攻击一个基类被很多bean扩展的项目。

这个基类有一个常用的方法,基本上我唯一需要做的改变是检查特定调用何时失败,调用该方法的当前实例是否是应用程序作用域bean。如果是,我只需记录错误消息并返回缓存响应;如果不是,我必须提出异常。

在每个扩展此基类的应用程序范围bean上使用instanceof的公寓,有没有办法知道对象this是否是应用程序范围的bean?

1 个答案:

答案 0 :(得分:1)

您可以检查某个实例的类是否具有特定注释。例如,电话:

Annotation[] annotations = this.getClass().getAnnotations();

将为您提供当前实例的所有注释。或者您可能想要找出某些注释:

ApplicationScoped annotation = this.getClass().getAnnotation(ApplicationScoped.class);

如果未使用null

注释班级,则会返回@ApplicationScoped

在继承的情况下,方法getAnnotations()也返回父类的注释,并且使用@RequestScoped类注释如果其父类被声明,则还将返回@ApplicationScoped。另一方面,JSF管理的bean将覆盖父级的范围。

希望这会对你有所帮助。