1

对于我的特定项目,我使用 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 也是如此。

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

4

2 回答 2

3

如果您的 中有条目facelets.REFRESH_PERIOD -1web.xml这就是导致问题的原因。只需通过删除此条目进行交叉检查即可。

于 2011-02-04T16:00:44.127 回答
0

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

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

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

对于它的价值,我认为设置 Last-Modified 通常是一个好主意,除非您的页面是动态的。

于 2009-01-30T03:38:47.550 回答