Thymeleaf –片段和angularjs路由器局部视图
百里香葉許多很酷的功能之一就是能夠渲染模板片段–我發現這是與AngularJs一起使用的特別有用的功能。
可以將AngularJS $ routeProvider或AngularUI路由器配置為返回不同“路徑”的部分視圖,使用百里香葉返回這些部分視圖確實效果很好。
考慮一個簡單的CRUD流,用以下方式定義AngularUI路由器視圖:
上面的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路由器局部视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联发科:3纳米制程芯片已成功流片 预计2
- 下一篇: 首飞 35 周年,长征四号火箭成功发射遥