【问题标题】:A way to call a method everytime a sessionscoped bean is accessed?每次访问 sessionscoped bean 时调用方法的方法?
【发布时间】: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 请求。
  • 然后您可以将数据放在@SessionScoped bean 中,并通过将bean 注入指向此页面的@RequestScoped bean 来更新它。
  • 这里有更多关于@LuiggiMendoza 的内容。忘记过滤器,这是一个不雅的解决方案,我正在删除我的答案。 最好有一个@RequestScoped bean 来处理对页面的访问,注入一个@SessionScoped bean 来处理计数器并在@RequestScoped@PostConstruct 方法中更新计数器值。尽管如此,如果您想要一个可用于整个站点(而不仅仅是会话)的页面的计数器,您应该注入一个 @ApplicationScoped 来代替。另外,请确保您的计数器变量在同步块中进行了修改。

标签: jsf session-scope


【解决方案1】:

您可以在班级级别使用Interceptor,更多信息:http://docs.oracle.com/cd/E16439_01/doc.1013/e13981/ses30cfg008.htm#BCGDHEBF

【讨论】:

  • 但我的支持 bean 是一个 #Named 和 #SessionScoped bean。它也可以是#Stateful bean吗?对不起,如果这个问题很愚蠢,我对 Java 还是很陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多