下面是我尝试做的一个例子。使用Session和View来浏览视图scoped托管bean JSF 2.0
在sessionScoped豆
SessionBeanloadRecord(){
Do something
ViewScopedBean viewScopedBean = (ViewScopedBean) context.getApplication().evaluateExpressionGet(context, "#{viewScopedBean}", ViewScopedBean.class);
return viewScopedBean.viewScopedBeanLoadRecord();
}
在viewScoped豆
ViewScopedBeanloadRecord(){
Retrieve and populateFields
return "viewRecord.xhtml";
}
所以在坚果壳我想调用的图中的方法从另一个bean这是对另一个作用域bean查看(listRecords.xhtml)。 当我运行这个(只使用一个标准的命令链接)时,会话bean按我的预期工作,viewScoped bean被创建并且ViewScopedBeanloadRecord方法被调用但是那么viewScoped bean被重新创建(构造函数被再次调用),但是这次ViewScopedBeanloadRecord未运行,页面加载空白字段。
据我所知,只要您返回null(或有一个void方法)留在相同的视图,但你如何从listRecords.xhtml过渡到viewRecord.xhtml并运行加载方法?
一旦我在viewRecord.xhtml视图中,我也将被要求同时加载更多的记录(在不同的浏览器窗口中),所以我不能保留会话中的记录。
请注意:根据公司政策,我不允许发布实际的代码,所以这个例子是我所限制的。抱歉!
任何帮助,将不胜感激!
感谢
埃里克
所有与此解决方案的会话中,因为它们始终被引用,所以JVM永远不会销毁它们,直到会话结束。这就像所有的豆被标记为“sessionScoped”。 – 2012-11-28 16:16:50