我对表达式语言2的bean-view通信语法感到困惑。首先,有可能再有一个托管bean具有相同名称但scobes不同。如果访问它们另一方面通过表达语言 ; 考虑到会话中有一个名为DemoBean的属性,并且还有一个会话Scobed托管bean,名为DemoBean, 如果我尝试像这样通过EL访问此bean #{DemoBean} //引用bean或属性? 他们说#{} sessionScobe是访问会话属性,但
只是#{} sessionattributename是有效的方法是什么?当我将对象放置到会话映射中时,它是否被复制或复制?EL会话属性和托管bean访问
0
A
回答
1
JSF的目标是为您管理会话属性本身。这意味着您应该忘记手动保持/恢复会话映射属性,因为您可以使用JSF的机制来完成此操作。
当您想要保留整个应用程序的一些信息时,请在托管bean中使用@ApplicationScoped
注释。您可以使用@SessionScoped
,@RequestScoped
和@ViewScoped
注释对会话,请求或具体视图执行相同操作。
所以,如果你要存储在会话中的某些属性:使用
@ManagedBean
@SessionScoped
public class SessionScopedBean{
public String sessionAttribute;
//Getter and setter
}
您可以recover/change the value of the attribute of the bean的FacesContext
:
FacesContext context = FacesContext.getCurrentInstance();
SessionScopedBean bean = (SessionScopedBean) context.getApplication()
.evaluateExpressionGet(context, "#{sessionScopedBean}", SessionScopedBean.class);
bean.setSessionAttribute("value");
记住JSF豆默认命名为bean的名字与第一性格较低。如果你没有初始化你自己,请记住这个bean在第一次打击时将会是null。您可以通过简单的方式using a PreRenderViewEvent
in the bean you want to initialize并在您的登录页面中执行它。这可确保该bean在该会话的其余部分保持活力。
最后,就是你会从您的视图访问会话属性的方式:“当我把一个对象的会话映射是referanced或复制”
#{sessionScopedBean.sessionAttribute}
相关问题
- 1. 托管bean作为托管属性
- 2. 属性以JSF托管bean
- 3. EL会话对象属性
- 4. 是否无法访问非托管bean类中的托管属性?
- 5. 如何从bean的方法访问Spring托管属性?
- 6. JSF托管Bean属性目标无法访问
- 7. JSP-EL会话变量访问错误:javax.el.PropertyNotFoundException尽管所述属性被公开
- 8. 在JSF托管bean的构造函数中访问会话bean数据
- 9. LazyInitializationException与CDI托管Bean和有状态会话Bean
- 10. 同步会话scopped托管bean
- 11. 防止会话属性由EL
- 12. 托管和会话bean的模拟和集成测试
- 13. 会话范围的托管bean vs有状态的bean vs httpsession
- 14. 会话范围的托管bean和ActionListener的
- 15. JSP EL可以直接访问属性
- 16. 春季MVC会话属性访问
- 17. JSF EL有两个bean的属性
- 18. JSF托管bean问题
- 19. VPS托管和根访问
- 20. 在Singleton会话Bean中管理并发访问
- 21. 访问远程/本地会话Bean
- 22. EJB访问有状态会话Bean NameNotFoundException
- 23. 会话bean和实体bean?
- 24. JSF托管bean
- 25. 弹出对话框单独托管bean
- 26. 在scriptlet中访问struts bean属性
- 27. Struts:从视图中访问bean属性
- 28. 按名称访问bean属性
- 29. 如何访问JSP中的bean属性?
- 30. 当访问会话属性时,Tomcat和空指针异常
感谢意见,但 – daemonThread 2013-04-07 17:17:16
当java引用它的对象时,它将被引用。所以如果你改变对象的值,它也会变成地图(最后,会话属性也存储在地图中)。不过,正如我所说的,使用JSF时要摆脱它。 – 2013-04-07 20:32:22
当新会话scobed托管bean创建它是否隐式添加到会话映射?所以通过req.getSession()。getAttribute(“credentials”)来访问它。是真的?我问这是因为我有登录过滤器和会话scobed managedbean调用credentials.In过滤器依赖注入是不允许的,并且FacesContext#getExternalContext()。getSessionMap()。get(“credentials”);返回null我们不能访问过滤器中的面孔上下文,所以只有方法接缝会话属性我猜。 – daemonThread 2013-04-07 21:54:05