I want to ask if i place my managed bean in session scope, then it is stored in session' Like if i have a bean like this
@ManagedBean
@SessionScoped
public class SessionScopedBean implements Serializable {
.......
} //end of class SessionScopedBean
Then it stored in the session, and during my session i can get it using
session.getAttribut("SessionScopedBean");
This will give me the SessionScopedBean Object, and when session will get destroy, i will get null. Now i want to ask if i have my bean in view Scope, then how can i get it. Like
@ManagedBean
@ViewScoped
public class ViewScopedBean implements Serializable {
.......
} //end of class ViewScopedBean
Now if the view is persist then this bean is in the view state, and when view changes, this bean will get destroy.Now i want to ask how can i get this bean from view state, if the view persist. Like
view.getAttrubute("ViewScopedBean"); //just a code. No actual implementation.
Thanks
They're stored in the view map as available by UIViewRoot#getViewMap()
:
Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
ViewScopedBean viewScopedBean = (ViewScopedBean) viewMap.get("viewScopedBean");
// ...
Equivalently, you should be using the session map abstraction as well which is available by ExternalContext#getSessionMap()
(you ultimately want to have zero javax.servlet
import declarations throughout your JSF code):
Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
SessionScopedBean sessionScopedBean = (SessionScopedBean) sessionMap.get("sessionScopedBean");
// ...
Unrelated to the concrete problem, this may not be the best way. Look at @ManagedProperty
if possible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With