1

我有一个简单的问题请教各位专家

同一个 bean 是否可以同时具有 Session-Scoped 和 Request-Scoped?

例如,我有一个豆子myBean,它可以是Session-ScopedRequest-Scoped吗?

编辑

在做了一些试验之后,我决定销毁第一个会话范围的会话。

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("SessionBean1");

有没有办法可以将它重新初始化为请求范围的请求?

4

2 回答 2

1

通过在一个faces-config.xml文件中定义它,可以在两个不同的范围内定义一个相同类型的 bean 。#{sessionScope.myBean}当通过,#{requestScope.myBean}等表达式引用时,这将导致两个不同的实例。

可以使用FacesContext.

但是,此类 bean 的存在表明存在设计缺陷。

于 2012-03-13T09:16:46.617 回答
0

您可以使用多个范围注释托管 bean。代码将无错误地编译和部署(使用 Mojarra 2.1.3 / Glassfish 3.1.1 测试)。

但是,效果将是始终应用​​最窄的范围。因此,如果您使用 and 注释您的 bean @SessionScoped@RequestScoped该 bean 将在请求范围内。

于 2012-03-13T08:17:35.480 回答