2

MyFaces を実装した JSF 2.0 Web アプリケーションがあります。アプリケーションは Apache Tomcat 7 で実行xhtmlされます。アプリケーションの実行中またはデバッグ中にページを変更しても、ページに変更が反映されません。xhtml のマイナーな変更をテストするために、Tomcat を再起動する必要があります。これにより、開発中に時間のロスが発生します。

これは MyFaces の問題だと思います。なぜなら、標準の JSF 実装を Mojarra から MyFaces に切り替えたときに問題が始まったからです。この問題はどのように解決できますか?

4

1 に答える 1

4

MyFaces は、Mojarra とは異なる Facelet キャッシュ アルゴリズムを使用し、より積極的に実行します。トーンダウンするには、javax.faces.PROJECT_STAGEコンテキスト パラメータを に設定する必要があります。web.xmlDevelopment

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

更新: Mojarra 2.2.11 以降、同じように動作します。そのため、Mojarra でも、DevelopmentFacelet キャッシングをオフにするステージを設定する必要があります。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

于 2012-08-30T21:30:57.440 に答える