有选择地禁用JSF资源依赖项

有选择地禁用JSF资源依赖项,jsf,resources,bootsfaces,butterfaces,Jsf,Resources,Bootsfaces,Butterfaces,如果我在一个页面中同时使用bootsface和butterfaces,那么这两个库都会导入其绑定的jquery和bootstrap样式表,如下所示: <link type="text/css" rel="stylesheet" href="/javax.faces.resource/bootstrap.min.css.xhtml?ln=butterfaces-configurable"> <link type="text/css" rel="stylesheet" href="

如果我在一个页面中同时使用bootsface和butterfaces,那么这两个库都会导入其绑定的jquery和bootstrap样式表,如下所示:

<link type="text/css" rel="stylesheet" href="/javax.faces.resource/bootstrap.min.css.xhtml?ln=butterfaces-configurable">
<link type="text/css" rel="stylesheet" href="/javax.faces.resource/css/bootstrap.min.css.xhtml?ln=bsf">

<script type="text/javascript" src="javax.faces.resource/jquery.min.js.xhtml?ln=butterfaces-configurable"></script>
<script type="text/javascript" src="javax.faces.resource/jquery.min.js.xhtml?ln=bsf"></script>


如果两个库使用同一版本,则导入重复内容会浪费带宽。如果两个库使用不同的版本,则可能存在冲突。处理这一问题的最佳方法是什么?我可以有选择地禁用一个组件库来导入某些样式表或脚本吗

2016年1月22日更新:与此同时,我们(BootsFaces团队)进行了一些努力,以增加对资源加载的细粒度控制。有关详细信息,请参阅。长话短说,BootsFaces如果检测到这些资源已经存在,就不会加载jQuery、jQueryUI或Bootstrap。此外,还可以通过web.xml上下文参数停用资源加载

过时的原始答案:
目前,唯一的解决方案是使用OmniFaces,就像巴卢斯说的那样。我们可以改进BootsFaces,这样只有在JSF页面没有提供这些库的情况下,它才能添加jQuery.min.js和bootstrap.min.css。在这种情况下,ButterFaces将提供jQuery和bootsface。当然,您将负责确保提供的jQuery版本与BootsFaces兼容。

2016年1月22日更新:与此同时,我们(BootsFaces团队)竭尽全力对资源加载进行细粒度控制。有关详细信息,请参阅。长话短说,BootsFaces如果检测到这些资源已经存在,就不会加载jQuery、jQueryUI或Bootstrap。此外,还可以通过web.xml上下文参数停用资源加载

过时的原始答案:
目前,唯一的解决方案是使用OmniFaces,就像巴卢斯说的那样。我们可以改进BootsFaces,这样只有在JSF页面没有提供这些库的情况下,它才能添加jQuery.min.js和bootstrap.min.css。在这种情况下,ButterFaces将提供jQuery和bootsface。当然,您将负责确保提供的jQuery版本与bootsface兼容。

您可以使用以下web.xml参数来禁用在#ButterFaces中提供jQuery

<context-param>
    <param-name>de.larmic.butterfaces.provideJQuery</param-name>
    <param-value>false</param-value>
</context-param>

de.larmic.butterfaces.provideJQuery
错误的
如果您有自己的版本,同样可以禁用引导

<context-param>
    <param-name>de.larmic.butterfaces.provideBootstrap</param-name>
    <param-value>false</param-value>
</context-param>

D.larmic.butterfaces.provideBootstrap
错误的

您可以使用以下web.xml参数禁用在#ButterFaces中提供jQuery

<context-param>
    <param-name>de.larmic.butterfaces.provideJQuery</param-name>
    <param-value>false</param-value>
</context-param>

de.larmic.butterfaces.provideJQuery
错误的
如果您有自己的版本,同样可以禁用引导

<context-param>
    <param-name>de.larmic.butterfaces.provideBootstrap</param-name>
    <param-value>false</param-value>
</context-param>

D.larmic.butterfaces.provideBootstrap
错误的

您是否使用OmniFaces?是的。我使用全方位。你的意思是使用联合资源管理器吗?如何处理版本冲突呢?使用CombinedResourceHandler,您确实可以通过web.xml甚至主XHTML模板抑制资源。但是如果没有它,还有其他的方法,它只需要一点自定义代码。@KenChan(OT,但只是一点点)你是我认识的第一个同时使用BootsFaces和ButterFaces的人——我认为这是不可能的,因为这两个框架非常相似。斯蒂芬:你介意和我联系,汇报一下你的经历吗。没问题。我使用ButterFaces的原因是因为我想使用它的boostrap日期时间选择器。如果BootsFaces还提供了boostrap日期时间选择器,那么我就不需要使用ButterFaces。也许,我应该开一张罚单,要求Bootfaces也有boostrap日期时间选择器:P最后,感谢开源BootsFaces:DDo你碰巧使用OmniFaces?是的。我使用全方位。你的意思是使用联合资源管理器吗?如何处理版本冲突呢?使用CombinedResourceHandler,您确实可以通过web.xml甚至主XHTML模板抑制资源。但是如果没有它,还有其他的方法,它只需要一点自定义代码。@KenChan(OT,但只是一点点)你是我认识的第一个同时使用BootsFaces和ButterFaces的人——我认为这是不可能的,因为这两个框架非常相似。斯蒂芬:你介意和我联系,汇报一下你的经历吗。没问题。我使用ButterFaces的原因是因为我想使用它的boostrap日期时间选择器。如果BootsFaces还提供了boostrap日期时间选择器,那么我就不需要使用ButterFaces。也许,我应该开一张罚单,要求Bootfaces也有boostrap日期时间选择器:P最后,感谢开源BootsFaces:d这是一个不错的选择。你是ButterFaces的作者吗?是的,我是ButterFaces的创作者之一。你在做BootsFaces吗?是的,我是:)。很高兴能联系上你。也许我们的团队可以互相帮助。这是一个很好的选择。你是ButterFaces的作者吗?是的,我是ButterFaces的创作者之一。你在做BootsFaces吗?是的,我是:)。很高兴能联系上你。也许我们的团队可以互相帮助。