【发布时间】:2013-07-10 13:38:10
【问题描述】:
我希望每次向 SessionScoped bean 发出请求时调用一个方法。
我该怎么做?
它类似于@PostConstruct,但我希望调用此方法,例如每次访问对此 bean 支持的页面的请求时。
谢谢。
【问题讨论】:
-
您正在寻找
@ViewScoped,而不是@SessionScoped。我建议您使用 JSF 2.2 和 CDI 的新@ViewScoped注释:jdevelopment.nl/jsf-22/#1087(因为在旧问题中您注意到您正在使用 CDI)。 -
为什么要投反对票,投反对票?
-
@LuiggiMendoza 但是,bean 应该通过会话保持其属性。就像物业柜台一样。我想看看容器通过会话访问了多少次这个 bean,无论是通过 POST 还是 GET 请求。
-
然后您可以将数据放在
@SessionScopedbean 中,并通过将bean 注入指向此页面的@RequestScopedbean 来更新它。 -
这里有更多关于@LuiggiMendoza 的内容。忘记过滤器,这是一个不雅的解决方案,我正在删除我的答案。 最好有一个
@RequestScopedbean 来处理对页面的访问,注入一个@SessionScopedbean 来处理计数器并在@RequestScoped的@PostConstruct方法中更新计数器值。尽管如此,如果您想要一个可用于整个站点(而不仅仅是会话)的页面的计数器,您应该注入一个@ApplicationScoped来代替。另外,请确保您的计数器变量在同步块中进行了修改。
标签: jsf session-scope