10

我刚开始使用 Netbeans 7.1 测试版,它会显示我以前从未见过的类型的错误。具体来说:

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

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

我注意到,即使我在编辑器的空白处看到了红点,maven 驱动的构建仍然有效,GlassFish 仍然以我期望的方式运行我的应用程序。

那么我对这个问题的看法是什么?我将不得不将我的静态字段移动到其他地方还是有另一种处理方式?

4

2 回答 2

7

引用javax.enterprise.inject 包 javadocs

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

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

无论如何,这些常量真的是 API 的一部分吗?我的意思是,除了他们自己的课程之外,您是否可以在其他任何地方访问它们?如果没有,请减少对私人的可见性。(如果您只需要从视图中访问常量,您还可以为私有常量创建访问器)。如果是,我建议您将它们移到其他地方。

于 2011-11-26T01:32:19.720 回答
4

公共字段(静态或非静态)不可代理 - 这就是为什么它们只能是依赖范围的。要解决这个问题,您显然可以通过 getter 方法访问它们。

于 2011-11-28T21:24:00.650 回答