我有一个带有MyFaces实现的JSF 2.0 Web应用程序。该应用程序在Apache Tomcat 7上运行。当我在运行或调试应用程序时对xhtml
页面进行任何修改时,没有任何更改反映到页面上。我需要重新启动tomcat才能测试甚至是次要的xhtml修改。这会导致开发过程中的时间浪费。
我想这是一个MyFaces问题,因为当我将标准JSF实现从Mojarra切换到MyFaces时问题就出现了。如何解决这个问题?
答案 0 :(得分:4)
MyFaces使用与Mojarra不同的Facelet缓存算法,并且更加积极。您需要将javax.faces.PROJECT_STAGE
中的web.xml
上下文参数设置为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
来设置。