Почему я не могу иметь статические открытые поля в моих управляемых bean-компонентах? - PullRequest
10 голосов
/ 26 ноября 2011

Я только начал использовать бета-версию Netbeans 7.1, и она вызывает ошибки такого типа, которых я никогда раньше не видел. В частности:

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

Поля, на которые он жалуется, public static final. Я могу понять ограничение на нестатические поля, но не могу придумать вескую причину, по которой это не будет разрешено для статического поля. К сожалению, я использую их много, так как мне не нравится иметь константы в моем коде.

Я отмечаю, что, хотя в редакторе появляется красная точка на полях, сборка, управляемая maven, все еще работает, и GlassFish по-прежнему выполняет мое приложение так, как я ожидал.

Так в чем же заключается моя проблема в этом вопросе? Я собираюсь переместить мои статические поля в другое место или есть другой способ справиться с этим?

Ответы [ 2 ]

7 голосов
/ 26 ноября 2011

Цитирование javax.enterprise.inject пакета javadocs :

Если управляемый компонент имеет открытое поле, он должен иметь область видимости @ Зависимый.

Но я согласен с @BalusC, что если это скомпилируется, Netbeans должен сообщить об этом как Предупреждение (не так ли?).

В любом случае, эти константы действительно являются частью API? Я имею в виду, ты имеешь доступ к ним где-нибудь еще, кроме как в их собственных классах? Если нет, уменьшите видимость до частного. (Если вам просто нужен доступ к константам из представления, вы также можете создать методы доступа для приватной константы). Если да, я бы посоветовал вам переместить их куда-нибудь еще.

4 голосов
/ 29 ноября 2011

Открытые поля (статические или нет) не являются проксируемыми, поэтому они могут быть только зависимыми.Чтобы обойти это, вы, очевидно, можете получить к ним доступ через методы получения.

...