百里香叶许多很酷的功能之一就是能够渲染模板片段–我发现这是与AngularJs一起使用的特别有用的功能。

可以将AngularJS $ routeProvider或AngularUI路由器配置为返回不同“路径”的部分视图,使用百里香叶返回这些部分视图确实效果很好。

考虑一个简单的CRUD流,用以下方式定义AngularUI路由器视图:

app.config(function ($stateProvider, $urlRouterProvider) {$urlRouterProvider.otherwise("list");$stateProvider.state('list', {url:'/list',templateUrl: URLS.partialsList,controller: 'HotelCtrl'}).state('edit', {url:'/edit/:hotelId',templateUrl: URLS.partialsEdit,controller: 'HotelEditCtrl'}).state('create', {url:'/create',templateUrl: URLS.partialsCreate,controller: 'HotelCtrl'});
});

上面的templateUrl是激活适当状态时呈现的部分视图,这里使用javascript变量定义了这些视图,并使用thymeleaf模板以这种方式进行了设置(以干净地将已部署应用程序的上下文路径解析为根路径):

<script th:inline="javascript">/*<![CDATA[*/var URLS = {};URLS.partialsList = /*[[@{/hotels/partialsList}]]*/ '/hotels/partialsList';URLS.partialsEdit = /*[[@{/hotels/partialsEdit}]]*/ '/hotels/partialsEdit';URLS.partialsCreate = /*[[@{/hotels/partialsCreate}]]*/ '/hotels/partialsCreate';/*]]>*/
</script>

现在,考虑一个片段定义,例如处理列表的一个:

文件:templates / hotels / partialList.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" layout:decorator="layout/sitelayout">
<head><title th:text="#{app.name}">List of Hotels</title><link rel="stylesheet" th:href="@{/webjars/bootstrap/3.1.1/css/bootstrap.min.css}"href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"/><link rel="stylesheet" th:href="@{/webjars/bootstrap/3.1.1/css/bootstrap-theme.css}"href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.css"/><link rel="stylesheet" th:href="@{/css/application.css}" href="../../static/css/application.css"/>
</head>
<body>
<div class="container"><div class="row"><div class="col-xs-12"><h1 class="well well-small">Hotels</h1></div></div><div th:fragment="content"><div class="row"><div class="col-xs-12"><table class="table table-bordered table-striped"><thead><tr><th>ID</th><th>Name</th><th>Address</th><th>Zip</th><th>Action</th></tr></thead><tbody><tr ng-repeat="hotel in hotels"><td>{{hotel.id}}</td><td>{{hotel.name}}</td><td>{{hotel.address}}</td><td>{{hotel.zip}}</td><td><a ui-sref="edit({ hotelId: hotel.id })">Edit</a> | <ang-click="deleteHotel(hotel)">Delete</a></td></tr></tbody></table></div></div><div class="row"><div class="col-xs-12"><a ui-sref="create" class="btn btn-default">New Hotel</a></div></div></div>
</div>
</body>
</html>

关于百里香叶的伟大之处在于,可以在浏览器中打开并预览该视图。 要返回视图的一部分,在本例中,该部分以“ th:fragment =” content””开头,我要做的就是将视图的名称返回为“ hotels / partialList :: content” !

对于更新和创建视图,可以遵循相同的方法。

我有一个开放的部分是关于UI中的uri是“ / hotels / partialsList”如何映射到“ hotels / partialList :: content”,对于Spring MVC,这可以通过一个View Controller轻松完成。一种无需通过Controller返回视图名称的方法,可以通过以下方式进行配置:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/hotels/partialsList").setViewName("hotels/partialsList::content");registry.addViewController("/hotels/partialsCreate").setViewName("hotels/partialsCreate::content");registry.addViewController("/hotels/partialsEdit").setViewName("hotels/partialsEdit::content");}}

因此,总而言之,您可以使用thymeleaf模板创建完整的html视图,该模板可以预览,并且可以通过在开发期间在浏览器中打开视图来解决所有渲染问题,然后纯粹在运行时返回该视图的相关部分以返回视图片段html页面。

  • 可在此github位置获得遵循此模式的样本-https://github.com/bijukunjummen/spring-boot-mvc-test

翻译自: https://www.javacodegeeks.com/2014/06/thymeleaf-fragments-and-angularjs-router-partial-views.html

Thymeleaf –片段和angularjs路由器局部视图相关推荐

  1. thymeleaf片段使用_Thymeleaf –片段和angularjs路由器局部视图

    thymeleaf片段使用 百里香叶许多很酷的功能之一就是能够渲染模板片段–我发现这是与AngularJs一起使用的特别有用的功能. 可以将AngularJS $ routeProvider或Angu ...

  2. Thymeleaf th:fragment局部刷新

    目录 一. 前期准备 二. Controller 三. HTML 四. JS 五. 效果 一. 前期准备 import lombok.Data;@Data public class Test14Sub ...

  3. [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解

    模板布局 公共部分通常定义为模板布局:如页眉,页脚,公共导航栏.菜单等. 模板布局定义方法 布局页中用 th:fragment 定义模板片段,其他页面用 th:insert 引用片段 例如:foote ...

  4. thymeleaf公共页面元素抽取 || 引入片段的时候传入参数

    thymeleaf公共页面元素抽取 三种引入公共片段的th属性: th:insert:将公共片段整个插入到声明引入的元素中 th:replace:将声明引入的元素替换为公共片段 th:include: ...

  5. Thymeleaf抽取公共页面片段

    抽取页面 项目中,一般把所有的公共页面片段都抽取出来 放在一个独立的页面中 其他,所有的页面根据需要进行引用 参考文档 th:fragment 抽取公共元素 Name,随便自定义命名 <!DOC ...

  6. 母版页 中 html 乱码,Thymeleaf使用技巧:使用片段(fragment)实现母版页(Layout)功能...

    一.前言 为什么要使用模板页(Layout) 网站中往往有通用的布局,比如导航.底部等等,这些页面中共用的部分,就需要放在母版页(Layout)里面. 这样每个页面只用关注本页面要完成的功能/内容即可 ...

  7. 使用Spring boot,Thymeleaf,AngularJS从零开始构建新的Web应用程序–第3部分

    在之前的博客中,我们使用Thymeleaf,Bower和Bootstrap构建了登录页面,并将其部署到了Heroku. 在此博客中,我们将介绍用于前端的AngularJS和在后端的Spring Boo ...

  8. 使用Spring boot,Thymeleaf,AngularJS从零开始构建一个新的Web应用程序-第3部分

    在之前的博客中,我们使用Thymeleaf,Bower和Bootstrap构建了登录页面,并将其部署到了Heroku. 在此博客中,我们将介绍用于前端的AngularJS和在后端的Spring Boo ...

  9. 如何在Thymeleaf 模板中使用片段Fragments

    1. 引言 在本文中,我们将展示如何在Thymeleaf 模板中使用片段.表示可包含在其他模板中的模板片段的片段.它可以是页眉,菜单,页脚和文档的任何其他部分,通常在许多页面上重复.片段可以参数化并包 ...

最新文章

  1. 【简洁代码】1061 判断题 (15分)_18行代码AC
  2. 【MOSS】快速调试Sharepoint站点
  3. cr2032和br2032区别_钮扣电池CR2016和CR2032有什么区别?
  4. One Millisecond Face alignment with an Ensemble of Regression Trees
  5. 计算机算法知识点总结,2021计算机考研知识点总结(1)
  6. HDU4706 Children's Day
  7. Handler机制使用时候一些问题记录
  8. 关于MJ刷新的报Too many arguments to function call, expected 0, have *问题
  9. DAY3 购物车程序
  10. 抽奖滚动文字如何透明地覆盖在动态视频背景上?-活动现场双屏管理系统操作提示
  11. 人工智能第四课:机器学习的数学基础
  12. Action层, Service层 ,modle层 和 Dao层详解
  13. Microsoft Teams管理(一)
  14. 实现国标GB/T28181流媒体服务解决方案安防4G摄像头互联网直播方案EasyGBS之水库管理无线视频监控解决方案
  15. AMS5601开发 AB角度磁编码器
  16. scratch 有趣的加减法
  17. 关于PSINS运动轨迹仿真模块的理解和思考
  18. 将字符串中的特殊字符进行转义
  19. 非常简单-Linux环境下(有公网IP)或虚拟主机的环境下如何做一个网站???
  20. 01-学习笔记(webstorm自定义模板代码)【新手上路,多多关照】

热门文章

  1. 邮件发送---SpringBoot
  2. 服务器母鸡系统,母鸡云服务器
  3. 学院派 实践派 计算机科学与技术,饶旻现场为boss所在企业“挑错”
  4. no [query] registered for [filtered] in es7 的解决方法
  5. tomcat中配置jndi数据源以便spring获取
  6. MySQL优化(二):索引的类型、匹配原则、创建原则
  7. java 新功能_Java 14的新功能
  8. java记录类型_Java中的记录类型
  9. java 堆转储快照_捕获Java堆转储的7个选项
  10. rest post put_REST / HTTP方法:POST与PUT与PATCH