【发布时间】:2013-03-31 23:17:30
【问题描述】:
由于显示来自外部源的标头的给定要求,我们提出了以下设置(在 Tomcat 7 上使用 JEE6):
我们的页面经常使用模板:
...
<ui:composition ... template="/WEB-INF/templates/template.xhtml">
...
这个模板除了布局页面结构外,还包括另一个 XHTML 文件:
...
<h:body>
<ui:include src="./header.xhtml" />
...
然后包含的文件再次使用模板,但这次指向外部资源,该资源返回包含要使用的标头的<div> 元素:
...
<ui:composition ... template="http://someserver/somefile">
...
我知道这个设置有点奇怪,但是为了包含外部生成的<div> 元素,我们必须在页面中包含该元素。 (如果有人可以为给定问题提供更智能的解决方案,我会很高兴。)
到目前为止,这工作正常,但似乎是这种情况,这个包含的文件被我们的 Tomcat 缓存,导致在更改后不显示当前标题。如果 Tomcat 重新启动,则会显示新的标头。
谁能告诉我这一切是如何在幕后工作的,以及它是否与 Facelets、Tomcat 或我的特定设置有关?
【问题讨论】:
-
哪个 JSF 实现/版本?哪个JSF项目阶段?例如。 MyFaces 在非开发阶段通常会积极缓存,如果您不耐烦,则确实需要重新启动。
-
@BalusC 我们在 2.1.3-b02 版本中使用对 com.sun.faces.jsf-impl 的依赖。我们没有明确设置 javax.faces.PROJECT_STAGE,但我们有 facelets.DEVELOPMENT 为 true,也许这与此有关。那个时候可以禁用缓存吗?客户的要求是,他希望尽快在应用程序中看到对标头的更改(当然,如果可能的话,无需重新启动)。
标签: jsf-2 tomcat7 java-ee-6 facelets