Omnifaces:使用CombinedResourceHandler和Richfaces

时间:2012-11-20 10:44:27

标签: jsf richfaces omnifaces combinedresourcehandler

在Richfaces应用程序中使用CombinedResourceHandler时,仅组合样式表和用户定义脚本。标准JavaScript资源和所有Richfaces特定资源仍然是分离的资源。

Omnifaces文档指出:

  

RichFaces与几个JS文件存在同样的问题,但到目前为止,解决这个问题并不是一件容易的事情

所以我的问题是这个'非平凡的解决方法'会是吗?

据我所见,CombinedResourceHandlergetRendererType()返回org.richfaces.renderkit.ResourceLibraryRenderer时不会处理资源。然后由org.richfaces.renderkit.html.ResourceLibraryRenderer处理这些。

我不确定在这里将RichFaces行为与OmniFaces结合起来的最佳方法是什么。

2 个答案:

答案 0 :(得分:0)

我能够通过修改OmniFaces CombinedResourceHandler来创建解决方案。

详细信息:

Richfaces利用名为ResourceLibrarys的概念,这意味着资源不仅可以是单个文件,而且可以是这些文件的集合。例如,RichFaces使用名为 base-component.reslib 的资源。 RichFaces ResourceHandler将此资源依赖关系解释为依赖

  • javax.faces:jsf.js
  • 的jquery.js
  • richfaces.js
  • RichFaces的碱基component.js

因此,CombinedResourceHandler需要一些额外的功能来将依赖关系分离到Richfaces ResourceLibraries的普通资源。后者需要根据从RichFaces来源获得的规范来解决。

答案 1 :(得分:0)

在不修改CombinedResourceHandler本身的情况下解决这个问题并非易事。 CombinedResourceHandler本身确实需要修改才能使用反射黑客从RichFaces org.richfaces.resource.ResourceLibraryFactoryImpl中提取资源。反射黑客是必要的,以保持OmniFaces不受RichFaces依赖,以便它可以与PrimeFaces等其他组件库一起使用。

根据issue 107,这是在1.3-20121206中实施的。