1

如果我在一个页面中同时使用 bootsfaces 和 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>

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

4

2 回答 2

3

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

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

如果您有自己的版本,您也可以禁用引导程序

<context-param>
    <param-name>de.larmic.butterfaces.provideBootstrap</param-name>
    <param-value>false</param-value>
</context-param>
于 2015-08-01T17:13:47.517 回答
1

2016 年1 月 22 日更新:与此同时,我们(BootsFaces 团队)采取了一些措施来增加对资源加载的细粒度控制。有关详细信息,请参阅http://www.bootsfaces.net/layout/resourcemanagement.jsf。长话短说,如果 BootsFaces 检测到这些资源已经存在,它就不会加载 jQuery、jQueryUI 或 Bootstrap。另外,您可以通过 web.xml 上下文参数停用资源加载。

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

于 2015-07-29T22:10:24.983 回答