Обычно область по умолчанию - это область запроса. Я попытался удалить аннотацию области и ожидал, что bean получит запрос bean скопированное поведение (возвращая переданное значение на предыдущей странице, я помню, что я пробовал это в прошлом, и он работал нормально), но я не получил ничего на языке выражения, подключенном к нему. Итак, какова область по умолчанию и почему это не такое же поведение?!
Что представляет собой управляемый по умолчанию объект Bean в приложении JSF 2?
Ответ 1
Зависит от того, кто управляет bean.
Если он JSF через @ManagedBean
, то по умолчанию он равен @RequestScoped
, как указано в javadoc:
Если аннотации области охвата опущены, bean должен обрабатываться так, как будто присутствует аннотация
RequestScoped
Если он CDI через @Named
, то по умолчанию он @Dependent
, как указано в Документация по сварке:
Наконец, CDI имеет так называемый зависимый псевдообзор. Это область по умолчанию для bean, которая явно не объявляет тип области.
Эффект заключается в том, что экземпляр bean создается на каждом отдельном элементе EL. Итак, представьте форму входа в систему с двумя полями ввода, ссылающимися на свойство bean и командную кнопку, ссылающуюся на действие bean, таким образом, в общей сложности три EL-выражения, тогда эффективно будут созданы три экземпляра. Один с именем пользователя, одним из которых является набор паролей и один, на котором вызывается действие. В эффектах это ведет себя так же, как JSF @NoneScoped
. Это подтверждает симптомы, которые вы видите.
Если он Spring через @Component
, то по умолчанию он равен @Scope("singleton")
, как указано в javadoc:
По умолчанию:
"singleton"
В эффектах это ведет себя так же, как JSF @ApplicationScoped
и CDI @ApplicationScoped
.
Netbeans не имеет к этому никакого отношения. Это просто инструмент редактирования, например блокнот, но с более чем 1000 дополнительными функциями.