【问题标题】:how to switch broadleaf thymeleaf to angularjs ui如何将阔叶百里香切换到angularjs ui
【发布时间】:2016-05-20 19:57:28
【问题描述】:
我想把阔叶百里香ui改成angularjs。
编辑
<!-- Commented bean -->
<!-- <bean class="org.broadleafcommerce.common.web.BroadleafThymeleafViewResolver">
<property name="templateEngine" ref="blWebTemplateEngine" />
<property name="order" value="1" />
<property name="cache" value="${thymeleaf.view.resolver.cache}" />
<property name="characterEncoding" value="UTF-8" />
</bean> -->
Added new viewresolver
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/templates/</value>
</property>
<property name="order" value="1" />
</bean>
排除百里香叶罐并添加所有豆类
根据http://www.broadleafcommerce.com/docs/core/current/appendix/removing-thymeleaf
加载页面时出错
在名称为“mycompany”的 DispatcherServlet 中找不到具有 URI [/WEB-INF/templates/index.html] 的 HTTP 请求的映射
【问题讨论】:
标签:
java
angularjs
spring-mvc
broadleaf-commerce
【解决方案1】:
为什么要完全删除 Thymeleaf?你想做同构吗?如果没有,您所要做的仍然是渲染 Thymeleaf 模板,但使用它仅在页面上包含 AngularJS 库,而不在 Thymeleaf 中执行任何其他操作。然后,您只需在前端编写所有内容,就像使用普通 Angular 应用程序一样。
此外,如果您使用的是 Broadleaf 控制器(演示应用程序中提供的控制器),那么如果您想完全更改模板结构,您将需要更改几乎所有控制器(或将它们扔掉)。在这种情况下,控制器返回“index”,但现在 Spring 不知道如何解释“/WEB-INF/templates/index.html”,因为您删除了视图解析器。
【解决方案2】:
Broadleaf 控制器返回视图。 Broadleaf 视图解析器然后映射视图以重定向 UI。
对于 AngularJS,Angular 控制器期望来自服务调用响应的 JSON,因为视图导航可以由 angularJS 的 routeProvider 模块负责。我们可以创建自己的 RestControllers 和 autowire Broadleaf 服务。将阔叶服务响应转换为 JSON 并从 RestController 返回。
在 AngularJS 控制器中,我们将获取 JSON,并根据响应我们可以使用 $location.path("/path") 来决定视图。并且 Path Navigation 可以由 $routeProvider 管理。
但在这种方法中,我们无法利用 Broadleaf 控制器、验证、UI 绑定等。您可以检查是否接受。
【解决方案3】:
我建议构建一个新的 Angular 项目,而不是修改现有的阔叶 ui。 Broadleaf Community Starter 项目有 api 模块,已经有休息服务。
我正在构建一个角度站点项目。我想分享我的方法。我检查了阔叶 community starter 项目。重构包名称。配置为使用 mysql。在能够使用 mysql 运行社区启动器管理员、站点、api 项目之后。我为ui创建了一个单独的“角度”项目(由jhipster)。我添加了修改后的阔叶项目作为依赖项。我在我的 ng-site 项目中扩展了现有的阔叶 API 控制器。找到一个 html 主题。将其解析为角度分量。创建角度服务并绑定到后端休息服务。它正在部分工作。
这是我的ng-site 项目来源。它还没有完成,但它可以给你一个想法。