如果页面包含 b:carousel,SPA 方法不起作用

SPA approach not working if page contains b:carousel

环境:

我正在使用 JSF2.2、Bootsfaces 0.9.1、Primefaces 6.0、JEE7 和 Hibernate 5.2 结合 MySQL 5.7 DB 编写 SPA。

我有:

我的SPA在上部有一个导航栏,在左侧有一个基于导航栏选择的特定菜单。在右侧和导航栏下方,我有我的主要 "content page"。类似这张图,不同的是我的菜单是动态的:

为了更新我使用的内容页面 AJAX。

只要我的内容页面不包含 b:carousel!

,导航周围的一切都按我的预期工作

我尝试做的事情:

正如我上面提到的,我的 SPA 和所有导航都正常工作,除非我将 b:carousel 添加到内容页面。

请考虑以下示例:

我有 2 个内容页面。第 1 页包含带有一些文本的单个标签。第 2 页包含带有一些图像的 b:carousel。第 1 页是欢迎页面。 当我从第 1 页导航到第 2 页时,什么也没有发生。我需要完全刷新整个页面才能看到第 2 页,即使这样也不是每次都有效。

我的主要问题:

如果上面有 b:carousel,是否有任何技巧可以用 ajax 更新内容页面? 我做错了什么?

编辑:

我在 github 上创建了一个示例项目,因此您可以明白我的意思。我使用了 Java 1.8、Tomcat 8.0.36 和 Netbeans IDE,但是该项目是一个 Maven 项目,应该也可以在 eclipse 中工作。

项目:https://github.com/mweber96/Whosebug39128418

我部分使用的 SPA 方法:http://www.beyondjava.net/blog/single-page-applications-with-bootsfaces/

这个问题与我之前的问题有关:

这是两个错误的组合:

  • 您在 GitHub 中的示例使用了 PrimeFaces,但它似乎没有使用 PrimeFaces 组件。结果是 PrimeFaces 添加了一些花哨的 JavaScript 来动态加载丢失的 CSS 文件(这很棒!),但它没有添加 PrimeFaces 核心库,所以 Mojarra 会悄悄地遇到异常隐藏。您可以通过向页面添加(可能隐藏的)PrimeFaces 组件来解决此问题,方法是直接包含 PrimeFaces core.js 文件(尽管我不建议这样做),或者 - 当然 - 如果您真的这样做,则通过删除 PrimeFaces 依赖项来解决此问题不需要。

    • BootsFaces 依赖 HTML 属性来初始化轮播。令我惊讶的是,这甚至至少部分有效。但是,要自动开始滑动,您仍然需要手动初始化 JavaScript 小部件。在你的情况下,那是 $("#myCarousel").carousel();

顺便说一句,我建议您在我们的错误跟踪器上打开一个错误来修复后一点 (https://github.com/TheCoder4eu/BootsFaces-OSP/issues)。提前致谢!