gpt4 book ai didi

JSF 2.0 Managed Property 对象有两个不同的实例,当我打开页面和做 ajax 请求时

转载 作者:行者123 更新时间:2023-12-04 20:50:21 27 4
gpt4 key购买 nike

全部

我是 JSF2 的新手(在 tomcat7 上使用 Mojarra + primeFaces),我得到了 ManagedProperty 对象的奇怪行为:

@ManagedBean
@ViewScoped
public class CreateFactMB implements Serializable{

@ManagedProperty(value="#{collectionFactTable}")
private CollectionFactTable collectionFactTable; //SessionBean
...
//setters/getters

我打印对象时 打开页面 (刷新brouser)我看到一个collectionTree的实例
mbeans.CollectionFactTable@12803ba

但是当我做ajax请求时
<p:commandButton id="btn1" value="Save" update="growl"
actionListener="#{createFactMB.doUpdate}" />

更新 我看到我的 collectionTree 的另一个实例
mbeans.CollectionFactTable@625c49

这是问题,因为我无法在 ajax 操作时进行更改(因为我刚刚复制)

任何人都可以帮助我吗?我做错了什么?

最佳答案

我认为您对 SessionScoped 持久性在 JSF 中的工作方式存在误解。这种行为是预期的和正常的。

enter image description here

在请求开始时,无论范围如何,都会实例化所有托管 bean。在恢复 View 阶段,基于 session 的持久性值被设置为新的托管 bean 对象,有效地将 SessionScoped bean 恢复到发送最后一个响应之前的最后一个状态。

一旦响应完成并被发送,这些托管 bean 实例中的数据将被持久化,并且对象被取消引用以进行垃圾回收。该过程在下一个请求时重新开始,无论它是否是 Ajax。

关于JSF 2.0 Managed Property 对象有两个不同的实例,当我打开页面和做 ajax 请求时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554649/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com