使用 JSF 呈现 Chrome 中数据库记录的问题
Rendering issue with a record from Database in Chrome using JSF
我在我的 XHTML 页面中使用标准 f:viewParam 在呈现页面之前从数据库加载特定记录。当我不使用 Chrome 作为浏览器时,这非常有效。因此,在 Firefox、Safari 和 Edge 中,页面会按预期呈现,其中包含有关所请求记录的详细信息。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:pe="http://primefaces.org/ui/extensions"
xmlns:kf="http://wspsoft.de/kolibri/platform/faces" xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" xmlns:c="http://java.sun.com/jstl/core">
<f:metadata>
<f:viewParam name="addressId" value="#{newAddressCRBean.addressId}"/>
<f:viewParam name="formView" value="#{newAddressCRBean.formView}"/>
</f:metadata>
...
但是当使用 Chrome 时,大约 80% 的页面都被渲染,但没有显示数据,只有空的 p:inputFields 和 p:outputLabels。另外 20% 的页面得到正确呈现。
在日志中,我可以看到从 f:viewParam 调用了正确的函数,就像在成功的案例中一样,包含正确的记录 ID。点击刷新按钮后,页面始终会正确呈现,其中包含有关所请求记录的有用信息。
有没有人知道 Chrome 与其他兄弟相比有什么不同,以及我如何强制 Chrome 正确行事?
提前致谢。
好的,修复了它,尽管我仍然不能 100% 确定哪里出了问题。我的问题的根本原因是我的 bean 的 ViewScope 和这个机制 (http://javaevangelist.blogspot.de/2014/08/jsf-21-tip-of-day-clearing-viewscope.html) 来解决 ViewScoped Beans 和垃圾收集的问题。当页面呈现时,bean 以某种方式被杀死并在某个随机时间点重新实例化,导致我原来的 post.
中提到的奇怪效果
我通过重写 John Reary 的提示解决了这个问题,不删除最新的视图,而是保留 10 个视图的列表并始终从列表中删除最旧的视图。
为什么 Chrome 会引发这种奇怪的行为以及所有其他浏览器 d
不是吗,我说不出来,但我想这与 Chrome 的内部速度优化有关。
我在我的 XHTML 页面中使用标准 f:viewParam 在呈现页面之前从数据库加载特定记录。当我不使用 Chrome 作为浏览器时,这非常有效。因此,在 Firefox、Safari 和 Edge 中,页面会按预期呈现,其中包含有关所请求记录的详细信息。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:pe="http://primefaces.org/ui/extensions"
xmlns:kf="http://wspsoft.de/kolibri/platform/faces" xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" xmlns:c="http://java.sun.com/jstl/core">
<f:metadata>
<f:viewParam name="addressId" value="#{newAddressCRBean.addressId}"/>
<f:viewParam name="formView" value="#{newAddressCRBean.formView}"/>
</f:metadata>
...
但是当使用 Chrome 时,大约 80% 的页面都被渲染,但没有显示数据,只有空的 p:inputFields 和 p:outputLabels。另外 20% 的页面得到正确呈现。
在日志中,我可以看到从 f:viewParam 调用了正确的函数,就像在成功的案例中一样,包含正确的记录 ID。点击刷新按钮后,页面始终会正确呈现,其中包含有关所请求记录的有用信息。
有没有人知道 Chrome 与其他兄弟相比有什么不同,以及我如何强制 Chrome 正确行事?
提前致谢。
好的,修复了它,尽管我仍然不能 100% 确定哪里出了问题。我的问题的根本原因是我的 bean 的 ViewScope 和这个机制 (http://javaevangelist.blogspot.de/2014/08/jsf-21-tip-of-day-clearing-viewscope.html) 来解决 ViewScoped Beans 和垃圾收集的问题。当页面呈现时,bean 以某种方式被杀死并在某个随机时间点重新实例化,导致我原来的 post.
中提到的奇怪效果我通过重写 John Reary 的提示解决了这个问题,不删除最新的视图,而是保留 10 个视图的列表并始终从列表中删除最旧的视图。
为什么 Chrome 会引发这种奇怪的行为以及所有其他浏览器 d 不是吗,我说不出来,但我想这与 Chrome 的内部速度优化有关。