我刚开始使用Netbeans 7.1测试版,它正在调出我以前从未见过的类型的错误。具体做法是:
A managed bean with a public field should not declare any scope other than @Dependent.
它抱怨的字段是public static final
。我可以理解对非静态字段的限制,但我想不出一个很好的理由不允许静态字段。不幸的是我使用了很多,因为我不喜欢在我的代码中使用常量。
我注意到即使我在编辑器的边缘得到红点,maven驱动的构建仍然有效,而GlassFish仍然以我期望的方式运行我的应用程序。
那么我在这个问题上的说法是什么?我是否必须将静态字段移动到其他位置,还是有其他方法来处理它?</ p>
答案 0 :(得分:7)
引用javax.enterprise.inject
package javadocs:
如果托管bean具有公共字段,则它必须具有范围@Dependent。
但我确实同意@BalusC,如果这个编译,Netbeans应该将其报告为警告(是吗?)。
无论如何,那些常量真的是API的一部分吗?我的意思是,你是否在他们自己的课程中访问其他地方?如果没有,请降低对私人的可见性。 (如果您只需要从视图中访问常量,您还可以为私有常量创建访问器)。如果是的话,我建议你把它们移到其他地方。
答案 1 :(得分:4)
公共字段(静态或非静态)不可代理 - 这就是为什么它们只能依赖于作用域。要解决这个问题,你显然可以通过getter方法访问它们。