JSF 1.2:如何在同一视图上的回发中保持请求范围的托管 bean 处于活动状态?

发布于 2024-11-05 09:24:16 字数 191 浏览 0 评论 0原文

是否可以在同一页面上的回发过程中保持请求作用域的 bean 处于活动状态?

一般的问题是,bean 在请求结束时被丢弃,并在每次表单提交时重新创建,例如动态操作的 disabledreadonlyrendered 后面的布尔值 重置为默认值并导致表单不再按预期工作。

Is it possible to keep a request scoped bean alive across postbacks on the same page?

The general problem is, as the bean gets trashed on end of request and recreated on every form submit, for example the booleans behind dynamically manipulated disabled, readonly and rendered get reset to their default values and cause the forms to not work as intented anymore.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴情换悲伤 2024-11-12 09:24:16

我假设会话范围不是一个选项,否则这个问题就没有意义。

您可以使用 Tomahawk 。将以下行添加到页面的某处:

<t:saveState value="#{bean}" />

RichFaces < a4j:keepAlive> 也做同样的事情:

<a4j:keepAlive beanName="#{bean}" />

或者如果有空间,至少升级到 JSF 2.x 并将 bean 放在 view 范围内:

@ManagedBean
@ViewScoped
public class Bean implements Serializable {
    // ...
}

无论哪种方式,当您回发到同一视图并不断从操作方法返回 nullvoid 时,将存在相同的 bean。

另请参阅:

I'll assume that the session scope is not an option, otherwise this question makes little sense.

You can do it using Tomahawk <t:saveState>. Add the following line somewhere to the page:

<t:saveState value="#{bean}" />

RichFaces <a4j:keepAlive> does also the same:

<a4j:keepAlive beanName="#{bean}" />

Or if there is room, upgrade to at least JSF 2.x and put the bean in view scope:

@ManagedBean
@ViewScoped
public class Bean implements Serializable {
    // ...
}

Regardless of the way, the same bean will be there when you postback to the same view and keep returning null or void from action methods.

See also:

何处潇湘 2024-11-12 09:24:16

事实并非如此,除非您将 Bean 存储在某个位置,例如应用程序范围内的 Map,以便稍后检索它。

为什么不直接将其设置为会话范围呢?这就是会话范围的用途,因此同一会话期间的多个请求可以达到相同的状态。

Not really, unless you store the Bean somewhere e.g. a Map in application scope, to retrieve it later.

Why not just make it Session scoped? This is what Session scope is there for, so multiple Requests during the same Session can hit the same state.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文