如何通过ExternalContext访问JSF2 @ViewScoped bean?

alf*_*onx 3 jsf-2

在JSF1您可以访问您当前的bean实例FacesContext

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext()
ev.getApplicationMap().get(beanName) // get an @ApplicationScoped bean instance
ev.getSessionMap().get(beanName) // get a @SessionScoped bean instance
ev.getRequestMap().get(beanName) // get a @RequestScoped bean instance
Run Code Online (Sandbox Code Playgroud)

在JSF2 @ViewScoped中已经介绍过了,但是我找不到相应的getViewMap()方法了ExternalContext?我使用的是最新的JSF 2.1.1-b04.我误解了@ViewScopedbean的某些方面吗?@ViewScoped在服务器端获取bean实例是否有另一种好的做法?

谢谢,史蒂夫

Ale*_*zov 7

尝试eval表达式(evaluateExpressionGet):

context.getApplication().evaluateExpressionGet(context, "#{beanName}", BeanClass.class)
Run Code Online (Sandbox Code Playgroud)


McD*_*ell 7

视图范围数据存储在视图根目录中.您可以从上下文中获取此信息.

  • `FacesContext.getCurrentInstance().getViewRoot().getViewMap().get(beanName)`works,thanks (5认同)