13

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

Basit
  • 8,426
  • 46
  • 116
  • 196

1 Answers1

26

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");
// ...

See also:


Unrelated to the concrete problem, this may not be the best way. Look at @ManagedProperty if possible.

Community
  • 1
  • 1
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • Is the parameter to the viewMap `viewMap.get("viewScopedBean");` an EL name? Is this only working for JSF-managed beans? If so, how do I get CDI-managed, view-scoped beans (Seam 3)? -> http://stackoverflow.com/questions/42008956/how-do-you-find-cdi-beans-of-in-the-current-view-scope – Kawu Feb 03 '17 at 18:00