что такое none scope bean и когда его использовать?
могут ли некоторые объяснить, что такое область none и ее цель?
предположим, если у меня фасоль в
request scope as r1
session scope as s1
application scope a1
и сказать, что я не вводил ни одного Боба области n1 в каждую из вышеуказанных областей, тогда я нахожу, что n1 получает экземпляр для каждого родительского компонента, когда когда-либо создается его родительский компонент[r1/s1/a1].
ни один компонент области в a1 не доступен в a1, так как A1 является областью приложения. ни один компонент области в s1 не доступен только до тех пор, пока s1 не будет уничтожен и когда s1 создан опять N1 является instanciated и ей.
это правильно?
и какова цель его использования? только для того, чтобы не создавать таких бобов самим?
большое спасибо
3 ответов
боб с <managed-bean-scope>
of none
или @NoneScoped
аннотация будет создана для каждого выражения EL, ссылающегося на компонент. Он нигде не хранится в JSF. Вызывающий абонент должен сохранить оцененную ссылку сам, если это необходимо.
Е. Г. следующей в вид
<p>#{noneScopedBean.someProperty}</p>
<p>#{noneScopedBean.someProperty}</p>
<p>#{noneScopedBean.someProperty}</p>
на бобе Без области видимости будет построить боб 3 (три) раза во время запроса. Каждый доступ к bean дает полностью отдельный bean который был переодет сразу после доступа к собственности.
однако, следующее, например, в сеансе scoped bean
@ManagedProperty("#{noneScopedBean}")
private NoneScopedBean noneScopedBean;
заставит его жить до тех пор, пока экземпляр bean с областью действия сеанса. Вы должны только убедиться, что вы получаете доступ к нему в представлении по #{sessionScopedBean.noneScopedBean.someProperty}
вместо.
поэтому это может быть полезно, если вы хотите, чтобы данные без области были доступны как управляемое свойство в произвольном компоненте.
Я использую @nonescoped, когда моя "логика просмотра" не должна быть в любой области, но ссылаться на другой ManagedBean.
Я работаю с Liferay, так как я хочу сделать свою архитектуру и дизайн независимыми от liferay, я создаю свои интерфейсы сервисов и Dto, но когда вам нужны данные о постоянстве, Liferay нужно, чтобы companyId и companyGroupId были отправлены из слоя представления (в данном случае JSF).
чтобы сохранить независимость, я сделал "шаблон адаптера", создав ServiceLayer ManagedBean с @noneScope с интерфейсом, независимым от Liferay. Таким образом, я могу получить companyId и companyGroupId, необходимые API Liferay.
преимущество использования @noneScope заключается в том, что вы можете использовать его как @ManagedProperty в любом компоненте любой области.
@NoneScoped было бы полезно в следующем сценарии.
предположим, что мы должны ввести один и тот же Боб в двух разных бобах, мы можем отметить этот боб как @NoneScoped. Сказать BeanOne фасоли с @NoneScoped может быть легко введен в любой фасоли с любыми объемами, как @просьбе или @сессии.
без использования @NoneScoped для BeanOne нам, возможно, придется дублировать боб с разными областями и вводить их соответственно.