1

我有一个 JSF 1.2 应用程序,它有一个基于会话的 bean。这个 bean 用于搜索我们的数据库。在我们的主页上,我有一些 HTML 控件,它们构建了一个搜索参数的 URL,然后将浏览器 URL 设置为 JSP。由于 bean 是基于 session 的,所以第一次通过主页访问时,参数传递正确。但是,后续访问意味着参数将被忽略,因为 bean 中没有执行任何函数。强制 bean 中的 init 函数重新加载的最佳方法是什么?

4

1 回答 1

2

这是会话范围 bean 的完全预期行为。它存储在 HTTP 会话中,并且只要 HTTP 会话存在并且不会在每个 HTTP 请求上重新创建/重新初始化,就可以重复使用。如果您打算在每个 HTTP 请求上重新创建/重新初始化 bean,那么您应该将它放在请求范围内。

但是,如果 bean 表示请求范围数据和会话范围数据的混合,那么您应该将 bean 拆分为两个单独的 bean,一个用于请求范围数据的请求范围,一个用于会话范围数据的会话范围。您可以在请求范围内使用<managed-property>以将会话范围一作为请求范围一的属性注入。通过这种方式,您可以将操作放在请求范围内,这将需要访问/操作会话范围内的数据。

也可以看看:

于 2013-03-26T11:53:37.623 回答