Что представляет собой управляемый по умолчанию объект Bean в приложении JSF 2?

Обычно область по умолчанию - это область запроса. Я попытался удалить аннотацию области и ожидал, что bean получит запрос bean скопированное поведение (возвращая переданное значение на предыдущей странице, я помню, что я пробовал это в прошлом, и он работал нормально), но я не получил ничего на языке выражения, подключенном к нему. Итак, какова область по умолчанию и почему это не такое же поведение?!

Ответы

Ответ 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 дополнительными функциями.

См. также: