如果我在.xhtml
文件中进行了更改,则更改不会反映在浏览器的屏幕上。为了使它工作,我必须每次都重新启动服务器。这对我来说似乎很笨拙。
我在web.xml
中添加了以下上下文参数:
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>1</param-value>
</context-param>
但是,它们没有任何效果。
我的技术堆栈如下:
答案 0 :(得分:6)
如果您使用的是IDE,则还必须配置IDE以立即将更改发布到服务器。否则,服务器上运行的webapp将无法获得这些更改的任何概念。
当你正在使用STS时,它基本上是Eclipse for Java EE,预装了一堆特定于Spring的插件,我认为给出一个针对Eclipse的通用答案已经足够了。
在Eclipse中,您只需双击 Servers 视图中的服务器条目,然后编辑发布部分以设置资源更改时自动发布并将发布间隔设置为尽可能低。它甚至可以 0 秒。
javax.faces.FACELETS_REFRESH_PERIOD
仅适用于webapp上下文中的文件。您只需要确保IDE尽快发布对webapp上下文的更改。
答案 1 :(得分:0)
我刚刚花了几个小时才发现将antiResourceLocking="true"
作为属性添加到应用程序<Context>
中的context.xml
元素会导致Tomcat 7中出现同样的问题:小脸文件没有被拾取;需要重新部署。
删除antiResourceLocking="true"
或将其更改为antiResourceLocking="false"
会使Tomcat按预期在开发项目阶段工作。
答案 2 :(得分:0)
您应该在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>