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

时间:2011-05-14 10:08:18

标签: jsf-2

在JSF1中,您可以通过

访问当前FacesContext的bean实例
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

在JSF2中引入了@ViewScoped,但我在getViewMap()上找不到相应的ExternalContext方法?我使用的是最新的JSF 2.1.1-b04。 我误解了@ViewScoped bean的某些方面吗?在服务器端获得@ViewScoped bean实例还有另一种好的做法吗?

谢谢, 史蒂夫

2 个答案:

答案 0 :(得分:7)

尝试评估表达式(evaluateExpressionGet):

context.getApplication().evaluateExpressionGet(context, "#{beanName}", BeanClass.class)

答案 1 :(得分:7)

视图范围数据存储在view root中。您可以从context获得此信息。