繁体   English   中英

直到服务器重新启动,JSF页面中的XHTML代码修改才会反映出来

[英]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.xmljavax.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM