JSF和自动重载xhtml文件

我使用JRebel,Spring,JSF Mojarra 2.0.3和WebLogic 10.3热重新加载XHTML文件时遇到了一些问题。

JRebel成功地在/ WebContent下重新加载常规Java类和js / css文件,而不是JSF的.xhtml文件。 需要完整的重新发布才能在服务器上更新xhtml文件。

通过反复试验,我终于通过向web.xml添加一些facelets参数并创建自定义ResourceResolver来实现它,如本博客文章中所述 。

但是,我想知道为什么这有效,更具体地说:

  • 为什么需要自定义ResourceResolver?
  • 是不是JRebel应该通过监视xhtml文件所在的/ WebContent来处理这个问题?
  • 我猜它与Facelets / JSF通过FacesServlet编译xhtml到servlets(?)有什么关系,JRebel无法检测到它?

JRebel处理/ WebContent文件夹更改。

问题是Facelets会进行缓存而不会重新读取已更改的文件。 要强制重新读取,请在web.xml指定以下参数。

JSF 2 (Facelets 2.x):

   javax.faces.FACELETS_REFRESH_PERIOD 0      javax.faces.PROJECT_STAGE Development  

对于JSF 1.2 (Facelets 1.x),参数是:

  facelets.REFRESH_PERIOD 0   facelets.DEVELOPMENT true  

有关JSF上下文参数的更多信息: http : //docs.jboss.org/jbossas/6/JSF_Guide/en-US/html/jsf.reference.html#standard.config.params

您的案例中不需要该自定义资源解析程序。 资源解析器只是从自定义文件系统文件夹中获取xhtml文件的一种棘手的方法。 在你的情况下,JRebel做到了(甚至更多)。

以下是我为我修复此问题的方法:

  1. validation在JRebel设置中是否启用了facelets插件
  2. validation您是否在web.xml使用Project Stage Development