【发布时间】:2019-07-10 08:27:15
【问题描述】:
我正在使用 JSF Mojarra 2.3.8 和 Tomcat 8(CDI 和 JPA 需要额外的库)。 我有一个 ViewScoped bean:
@Named @ViewScoped
public class MyBean implements Serializable {
...
我有一个使用这个 bean 的页面。
我在 2 个浏览器选项卡中打开页面,在选项卡 1 上修改并发布页面。然后离开选项卡 1 上的页面(该操作返回不同的页面)。
然后,在选项卡 2 上,我尝试修改并保存相同的记录。没有报错,但是从日志中可以看到MyBean被重新创建,丢失了原来的数据。
为了保存数据,我正在使用:
<h:commandButton type="submit" value="Save" action="#{myBean.saveData}" />
我认为 ViewScoped bean 可以在多个选项卡上独立使用。如果这是真的,为什么一个页面会影响与另一个页面关联的同一个 bean?
看来我也遇到了这里描述的同样问题:Multiple browser tabs or windows with the same ViewScoped bean class 但可惜没有答案。
虽然这可能与javax.faces.view.ViewScoped bean and multiple tabs issue 具有相同的根本原因,但我不认为这是重复的,因为我没有使用 WildFly,因此该问题的答案与我的不同(即 WildFly 已修补)。
【问题讨论】:
-
您还关注了该问题评论中的链接?以及评论中链接的答案中的链接? WildFly 的“问题”链接?请做。
-
看来这是 Mojarra 中的一个错误,有望在 2.3.10 版本中修复?
-
@Kukeltje 我不认为这是重复的,因为我没有使用 WildFly,所以该问题的答案与我的不同(即 WildFly 已修补)。
-
“这是 Mojarra 中已知且已解决的问题”是 Wildfly 和 Tomcat+Mojarra 的答案。 Wildfly 用户需要升级到打补丁的 WF,Mojarra 用户需要升级到打补丁的 Mojarra。我看不出有什么不同。
标签: jsf-2 cdi mojarra view-scope