Eclipse .xhtml文件中的更改未反映在浏览器中,需要重新启动并生成

Eclipse .xhtml文件中的更改未反映在浏览器中,需要重新启动并生成,eclipse,tomcat,jsf-2,facelets,Eclipse,Tomcat,Jsf 2,Facelets,如果我在.xhtml文件中进行更改,这些更改不会反映在浏览器的屏幕上。为了让它工作,我必须每次重新启动服务器。这对我来说似乎很难 我在我的web.xml中添加了以下上下文参数: javax.faces.PROJECT_阶段 发展 javax.faces.FACELETS\u刷新\u周期 1. 但是,它们没有任何效果 我的技术堆栈如下所示: SWF 2.3.0 Primefaces 2.2.1 JSF2 春季安全3 弹簧3.1.0M1I EhCache ApacheTomcat6.0 STS

如果我在
.xhtml
文件中进行更改,这些更改不会反映在浏览器的屏幕上。为了让它工作,我必须每次重新启动服务器。这对我来说似乎很难

我在我的
web.xml
中添加了以下上下文参数:


javax.faces.PROJECT_阶段
发展
javax.faces.FACELETS\u刷新\u周期
1.
但是,它们没有任何效果

我的技术堆栈如下所示:

  • SWF 2.3.0
  • Primefaces 2.2.1
  • JSF2
  • 春季安全3
  • 弹簧3.1.0M1I
  • EhCache
  • ApacheTomcat6.0
  • STS 2.5.1

如果您使用的是IDE,那么您必须配置IDE并立即将更改发布到服务器。否则,服务器上运行的webapp将无法了解这些更改

当您使用的STS基本上是eclipseforjavaee,它预装了一堆Spring特定的插件时,我认为给出一个针对Eclipse的通用答案就足够了

在Eclipse中,您只需双击Servers视图中的server条目,然后编辑Publishing部分,以设置资源更改时自动发布,并将发布间隔设置为尽可能低。它甚至可以是0秒




javax.faces.FACELETS\u REFRESH\u PERIOD
只适用于webapp上下文中的文件。您只需确保IDE尽快发布对webapp上下文的更改。

我刚刚花了几个小时才发现添加
antiresourcelock=“true”
作为应用程序
上下文中
元素的一个属性,xml
在Tomcat 7中会导致相同的问题:facelet文件中的更改不会被拾取;需要重新部署


删除
antiresourcelock=“true”
或将其更改为
antiresourcelock=“false”
可以使Tomcat在开发项目阶段按预期工作。

您应该在web.xml中添加这些行,这样每当.xhtml代码发生更改时,它就会刷新

<!--     JSF 2 (Facelets 2.x) -->
    <context-param>
        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
        <param-value>0</param-value>
    </context-param>

    <!-- Set the project stage to "Development", "UnitTest", "SystemTest", or "Production". -->
<!-- An optional parameter that makes troubleshooting errors much easier. -->
<!-- You should remove this context parameter before deploying to production! -->
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>

    <!--For JSF 1.2 (Facelets 1.x) parameters are  -->
    <context-param>
    <param-name>facelets.REFRESH_PERIOD</param-name>
    <param-value>0</param-value>
</context-param>
<context-param>
    <param-name>facelets.DEVELOPMENT</param-name>
    <param-value>true</param-value>
</context-param>

javax.faces.FACELETS\u刷新\u周期
0
javax.faces.PROJECT_阶段
发展
facelets.REFRESH\u周期
0
facelets.DEVELOPMENT
真的

Hi BalusC,我再次面临这个问题。请您帮忙。我已经完成了您在下面的回答中提到的操作。OP的“1”表示每秒。将其设置为“0”不会产生很大的差异,当然也无法解决OP存在的问题。