could some explain what a none scope is and purpose of it?
Suppose if i have a bean in
request scope as r1
session scope as s1
application scope a1
and say i inject none scope bean n1 in to each of above scopes then i find that n1 gets
instantiated for each parent bean when ever its parent bean[r1/s1/a1] is instantiated.
none scope bean in a1 is available throughout in a1 since a1 is appl scope.
none scope bean in s1 is available only until s1 is not destroyed and when s1 is created
again n1 is instanciated and made available to it.
Is it correct?
and what the purpose of using it? only to avoid creating such bean our self?
many thanks
A bean with a
<managed-bean-scope>ofnoneor a@NoneScopedannotation will be created on every single EL expression referencing the bean. It isn’t been stored by JSF anywhere. The caller has got to store the evaluated reference itself, if necessary.E.g. the following in the view
on a none-scoped bean will construct the bean 3 (three) times during a request. Every access to the bean gives a completely separate bean which is been garbaged immediately after the property access.
However, the following in for example a session scoped bean
will make it to live as long as the session scoped bean instance. You should only make sure that you access it in the view by
#{sessionScopedBean.noneScopedBean.someProperty}instead.So it may be useful when you want scope-less data being available as a managed property in an arbitrary bean.