[英]XHTML code modifications in JSF pages not reflected until server restart
我有一个带有MyFaces实现的JSF 2.0 Web应用程序。 该应用程序在Apache Tomcat 7上运行。当我在运行或调试该应用程序时在xhtml
页面上进行任何修改时,该页面上都没有任何更改。 我需要重新启动tomcat才能测试甚至较小的xhtml修改。 这导致开发过程中时间的浪费。
我猜这是MyFaces的问题,因为当我将标准JSF实现从Mojarra切换到MyFaces时,问题就开始了。 如何解决这个问题?
MyFaces使用与Mojarra不同的Facelet缓存算法,并且更具攻击性。 您需要将web.xml
的javax.faces.PROJECT_STAGE
上下文参数设置为Development
以将其调低。
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
更新 :从Mojarra 2.2.11开始,它的行为将相同。 因此,同样在Mojarra上,您需要设置“ Development
阶段以关闭Facelet缓存。 或者,将javax.faces.FACELETS_REFRESH_PERIOD
上下文参数显式设置为0
。
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>0</param-value>
</context-param>
值为0
表示“永不缓存”。 任何负值(例如-1
表示“无限缓存”。 任何正值(例如10
表示要缓存的秒数。
不要忘记重新启用缓存进行生产。 项目阶段更加有用,因为它也可以通过JNDI而不是通过web.xml
进行设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.