为什么我的托管bean中不能有静态公共字段?

Ala*_*ect 10 netbeans cdi jsf-2 netbeans-7

我刚刚开始使用Netbeans 7.1测试版,它正在调出我以前从未见过的类型的错误.特别:

A managed bean with a public field should not declare any scope other than @Dependent.

它抱怨的领域是public static final.我可以理解对非静态字段的限制,但我想不出一个很好的理由不允许静态字段.不幸的是我使用了很多,因为我不喜欢在我的代码中使用常量.

我注意到即使我在编辑器的边缘得到红点,maven驱动的构建仍然有效,GlassFish仍然以我期望的方式运行我的应用程序.

那么我对这个问题的看法是什么?我是否必须在其他地方移动我的静态字段,还是有其他方法来处理它?

Ant*_*oly 7

引用javax.enterprise.inject 包javadocs:

如果托管bean具有公共字段,则它必须具有范围@Dependent.

但我确实同意@BalusC,如果这个编译,Netbeans应该将其报告为警告(是吗?).

无论如何,那些常量真的是API的一部分吗?我的意思是,你是否在他们自己的课程中访问其他地方?如果没有,请降低对私人的可见性.(如果您只需要从视图中访问常量,您还可以为私有常量创建访问器).如果是的话,我建议你把它们移到其他地方.