【问题标题】:How to solve refreshing issues in Facelets and Spring Web Flow?如何解决 Facelets 和 Spring Web Flow 中的刷新问题?
【发布时间】:2010-10-03 22:48:24
【问题描述】:

对于我的特定项目,我使用 Facelets (1.1.14)、MyFaces (1.2.3) 和 Spring Web Flow (2.0.3)。我的 IDE 是 JDeveloper 10.1.3.3。我的浏览器是 IE6(工作要求)。

好的...今天遇到了一个非常奇怪的问题。通常,当我使用 Facelets 时,我可以对我的 xhtml 文件进行任何我想要的更改,刷新我的浏览器窗口,然后立即查看更改。我将 Facelets development 设置为 true,Facelets refresh period 设置为 1。

截至今天下午,我对这个项目的 Facelets 刷新没有任何问题。但是,就在今天下午,我开始发现刷新页面时没有出现对 css 样式和类的更改。然后我开始看到其他页面元素的类似问题。在某些情况下,这些更改永远不会出现。在其他时候,我可以在一段时间后刷新页面并且更改已经反映。

我的 Facelets 页面刷新发生了什么?就好像它们都粘了一样。我习惯于在页面刷新时立即更改而不会出现复杂情况。有没有人遇到过这个?有什么解决方案或建议吗?

编辑

这个问题与 Spring Web Flow 有关。我的页面之一是纯 Facelets,它会立即反映刷新时的变化。我的其他 xhtml 页面在我的流定义中作为视图状态被调用,并显示上述症状。不过,他们在一两天前工作得很好......

编辑

好的,我已经能够隔离症状,但我仍然不知道它的原因。

似乎每当我有一个 facelets xhtml 文件呈现为流的视图状态并具有一个 h:form 元素时,当我对页面上的 JSF 元素进行更改并刷新时,我就会出现奇怪的行为我的浏览器。这包括不显示其样式或样式类的更改。

对常规 HTML 元素的更改(例如更改输入元素的样式)似乎可以正常工作。将 h:form 更改为常规 HTML 表单允许在页面刷新时立即更改,甚至在 JSF 元素上也是如此。当我在不执行流程(仅使用 Facelets)时查看页面时,我从未遇到任何问题,即使使用 h:form 也是如此。

请告诉我有人以前遇到过这种情况,并有一些解决方案。任何人?

【问题讨论】:

    标签: java facelets spring-webflow


    【解决方案1】:

    我不确定这是否适用于 Web Flow,但我知道使用 Spring MVC,您可以选择让控制器实现 LastModified 接口,该接口允许 Spring 向浏览器发送“Last-Modified” HTTP 标头。

    Servlet 通常不设置此 HTTP 标头值,导致浏览器每次都请求文件的新副本,但是,如果设置了“Last-Modified”标头,浏览器就知道不检索 URL 的内容如果自上次检索该页面后未对其进行修改。

    我怀疑您的 Web Flow“控制器”(请原谅我滥用术语,我不熟悉 Web Flow)正在设置“Last-Modified”标题,而您的常规 Facelets 页面没有。

    不管怎样,我认为设置 Last-Modified 通常是个好主意,除非您的页面是动态的。

    【讨论】:

      【解决方案2】:

      如果您的 web.xml 中有 facelets.REFRESH_PERIOD -1 的条目,这就是问题所在。只需删除此条目进行交叉检查即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 2020-03-25
        相关资源
        最近更新 更多