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做到了(甚至更多)。
以下是我为我修复此问题的方法:
- validation在JRebel设置中是否启用了
facelets
插件 - validation您是否在
web.xml
使用Project Stage
Development