JRebel handles /WebContent folder changes.
The problem is that Facelets do caching and do not reread changed files. To force reload specify one of the following parameters in web.xml
.
JSF 2+ (Facelets 2+):
<!-- Set the project stage to "Development", "UnitTest", "SystemTest", or "Production". -->
<!-- An optional parameter that makes troubleshooting development stage errors much easier. -->
<!-- You should remove this context parameter before deploying to production or override via Server's JNDI config! -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
This will automatically set the "Facelets refresh period" configuration to 0, hereby effectively disabling the Facelets cache.
Or, if you don't want to change the project stage, then
<!-- Time in seconds that Facelets should be checked for changes since last request. A value of -1 disables auto-refresh. -->
<!-- You should remove this context parameter before deploying to production or use PROJECT_STAGE instead! -->
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>0</param-value>
</context-param>
For Faces 4.x the javax.
prefix should be jakarta.
instead, like so jakarta.faces.PROJECT_STAGE
and jakarta.faces.FACELETS_REFRESH_PERIOD
.
For JSF 1.2 (Facelets 1.x) the equivalent parameters are:
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>facelets.REFRESH_PERIOD</param-name>
<param-value>0</param-value>
</context-param>
More on JSF context params: http://docs.jboss.org/jbossas/6/JSF_Guide/en-US/html/jsf.reference.html#standard.config.params
That custom resource resolver is not needed in your case. That resource resolver is just a tricky way to get xhtml files from custom file system folder. In your case JRebel does that (and even more).