成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Thymeleaf 3學(xué)習(xí)筆記

stonezhu / 1574人閱讀

摘要:目前最新版本作為官方推薦模板引擎,而且支持純?yōu)g覽器展現(xiàn)模板表達式在脫離運行環(huán)境下不污染結(jié)構(gòu)是時候了解一番了。當(dāng)前數(shù)目,從開始。

Thymeleaf 目前最新版本3.0
Thymeleaf作為Spring-Boot官方推薦模板引擎,而且支持純HTML瀏覽器展現(xiàn)(模板表達式在脫離運行環(huán)境下不污染html結(jié)構(gòu)).是時候了解一番了。

安裝與初始化配置

與Spring集成


  org.thymeleaf
  thymeleaf-spring4
  3.0.0.RELEASE

與Spring-Boot集成:


    org.springframework.boot
    spring-boot-starter-thymeleaf

在Spring中進行配置:

@Configuration
@EnableWebMvc
@ComponentScan("com.thymeleafexamples")
public class ThymeleafConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {

  private ApplicationContext applicationContext;

  public void setApplicationContext(ApplicationContext applicationContext) {
    this.applicationContext = applicationContext;
  }

  @Bean
  public ViewResolver viewResolver() {
    ThymeleafViewResolver resolver = new ThymeleafViewResolver();
    resolver.setTemplateEngine(templateEngine());
    resolver.setCharacterEncoding("UTF-8");
    return resolver;
  }

  @Bean
  public TemplateEngine templateEngine() {
    SpringTemplateEngine engine = new SpringTemplateEngine();
    engine.setEnableSpringELCompiler(true);
    engine.setTemplateResolver(templateResolver());
    return engine;
  }

  private ITemplateResolver templateResolver() {
    SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
    resolver.setApplicationContext(applicationContext);
    resolver.setPrefix("/WEB-INF/templates/");
    resolver.setTemplateMode(TemplateMode.HTML);
    return resolver;
  }
}

在Spring-Boot中只需如下配置:

#thymeleaf start
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
#開發(fā)時關(guān)閉緩存,不然沒法看到實時頁面
spring.thymeleaf.cache=false
#thymeleaf end

具體可以配置的參數(shù)可以查看 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties這個類,上面的配置實際上就是注入到該類中的屬性值.

基本語法



    hello
    



3333

表達式

Variable Expressions: ${...}

Selection Variable Expressions: *{...}

Message Expressions: #{...}

Link URL Expressions: @{...}

Fragment Expressions: ~{...}

字符串操作:

String concatenation: +

Literal substitutions: |The name is ${name}|

條件操作:

If-then: (if) ? (then)

If-then-else: (if) ? (then) : (else)

Default: (value) ?: (defaultvalue)

No-Operation: _

如:"User is of type " + (${user.isAdmin()} ? "Administrator" : (${user.type} ?: "Unknown"))

1、獲取變量值

3333

可以看出獲取變量值用$符號,對于javaBean的話使用變量名.屬性名方式獲取,這點和EL表達式一樣.另外$表達式只能寫在th標(biāo)簽內(nèi)部,不然不會生效
#{}是國際化支持取值的符號
注意:th:text與th:utext的區(qū)別,輸出中文時應(yīng)該使用th:utext
${..}實際語法是:OGNL(非web),SpEL(web) ,支持的內(nèi)置變量

便捷部分

${x} will return a variable x stored into the Thymeleaf context or as a request attribute.

${param.x} will return a request parameter called x (which might be multivalued).

${session.x} will return a session attribute called x.

${application.x} will return a servlet context attribute called x.

基本的

#ctx: the context object.
#vars: the context variables.
#locale: the context locale.
#request: (only in Web Contexts) the HttpServletRequest object.
#response: (only in Web Contexts) the HttpServletResponse object.
#session: (only in Web Contexts) the HttpSession object.
#servletContext: (only in Web Contexts) the ServletContext object.

工具對象

#execInfo: information about the template being processed.
#messages: methods for obtaining externalized messages inside variables expressions, in the same way as they would be obtained using #{…} syntax.
#uris: methods for escaping parts of URLs/URIs
#conversions: methods for executing the configured conversion service (if any).
#dates: methods for java.util.Date objects: formatting, component extraction, etc.
#calendars: analogous to #dates, but for java.util.Calendar objects.
#numbers: methods for formatting numeric objects.
#strings: methods for String objects: contains, startsWith, prepending/appending, etc.
#objects: methods for objects in general.
#bools: methods for boolean evaluation.
#arrays: methods for arrays.
#lists: methods for lists.
#sets: methods for sets.
#maps: methods for maps.
#aggregates: methods for creating aggregates on arrays or collections.
#ids: methods for dealing with id attributes that might be repeated (for example, as a result of an iteration).

工具對象的使用方式見:http://www.thymeleaf.org/doc/..., 以下僅僅舉幾個例子

${#dates.format(date, "dd/MMM/yyyy HH:mm")}
${#dates.arrayFormat(datesArray, "dd/MMM/yyyy HH:mm")}
${#dates.listFormat(datesList, "dd/MMM/yyyy HH:mm")}
${#dates.setFormat(datesSet, "dd/MMM/yyyy HH:mm")}
${#dates.createNow()}
${#dates.createToday()} //time set to 00:00

${#strings.isEmpty(name)}  //Check whether a String is empty (or null)
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)} 

${#strings.startsWith(name,"Don")}                  // also array*, list* and set*
${#strings.endsWith(name,endingFragment)}           // also array*, list* and set*

${#strings.length(str)}
${#strings.equals(str)}
${#strings.equalsIgnoreCase(str)}
${#strings.concat(str)}
${#strings.concatReplaceNulls(str)}

*{...} 選擇對象里的變量,如

Name: Sebastian.

Surname: Pepper.

Nationality: Saturn.

//等價于

Name: Sebastian.

Surname: Pepper.

Nationality: Saturn.

字面量

Text literals: "one text", "Another one!",…

Number literals: 0, 34, 3.0, 12.3,…

Boolean literals: true, false

Null literal: null

字符串一般需要包圍在"單引號內(nèi),但也有幾種變通方式

...
//Which is equivalent to:

定義模板本地變量

The name of the first person is Julius Caesar.

The name of the first person is Julius Caesar.

But the name of the second person is Marcus Antonius.

2.引入URL
Thymeleaf對于URL的處理是通過語法@{…}來處理的

絕對路徑
相對路徑
Content路徑,默認(rèn)訪問static下的css文件夾

類似的標(biāo)簽有:th:href和th:src


view


view


view

view
view

Server root relative URLs
An additional syntax can be used to create server-root-relative (instead of context-root-relative) URLs in order to link to different contexts in the same server. These URLs will be specified like @{~/path/to/something}

3、運算符
在表達式中可以使用各類算術(shù)運算符,例如+, -, *, /, %

th:with="isEven=(${prodStat.count} % 2 == 0)"

邏輯運算符>, <, >=, <=,==,!= (gt, lt, ge, le,eq,ne)都可以使用,唯一需要注意的是使用<,>時需要用它的HTML轉(zhuǎn)義符:

th:if="${prodStat.count} > 1"
th:text=""Execution mode is " + ( (${execMode} == "dev")? "Development" : "Production")"

布爾運算符: and or not/!

4.條件
if/unless
Thymeleaf中使用th:if和th:unless屬性進行條件判斷,標(biāo)簽只有在th:if中條件成立時才顯示,th:unless于th:if恰好相反,只有表達式中的條件不成立,才會顯示其內(nèi)容。

Login

Switch
Thymeleaf同樣支持多路選擇Switch結(jié)構(gòu),默認(rèn)屬性default可以用*表示:

User is an administrator

User is a manager

User is some other thing

5.循環(huán)


      Onions
      2.41
      yes
    

迭代對象必須為

Any object implementing java.util.Iterable、 java.util.Enumeration、java.util.Iterator

Any object implementing java.util.Map. When iterating maps, iter variables will be of class java.util.Map.Entry.

Any array.

Any other object will be treated as if it were a single-valued list containing the object itself.


    Onions
    2.41
    yes
  
//不過也可以直接加Stat后綴訪問狀態(tài)變量

    Onions
    2.41
    yes
  

th:each內(nèi)置迭代狀態(tài)屬性:

index ,當(dāng)前索引,從0開始。

count,當(dāng)前數(shù)目,從1開始。

size,總大小

current,當(dāng)前值

even/odd boolean properties.

first boolean property.

last boolean property.

6、設(shè)置html標(biāo)簽屬性

//which is equivalent:


//append


Thymeleaf 3中的一些變化和特性

模板變化
推薦你去掉模板中的 th:inline=“text” 屬性。因為在HTML或XML模板中,不再需要該屬性去支持文本中內(nèi)聯(lián)表達式的特性。

完整的HTML5 標(biāo)記支持
不在強制要求標(biāo)簽閉合,屬性加引號等等

模板類型
Thymeleaf 3 移除了之前版本的模板類型,新的模板類型為:HTML、XML、TEXT、JAVASCRIPT、CSS、RAW

文本型模板
文本型模板使得Thymeleaf可以支持輸出CSS、Javascript和文本文件。在你想要在CSS或Javascript文件中使用服務(wù)端的變量時;或者想要輸出純文本的內(nèi)容時。
在文本模式中使用Thymeleaf的特性,你需要使用一種新的語法,例如:

[# th:each="item : ${items}"]
  - [# th:utext="${item}" /]
[/]
var a = [# th:text="${msg}"/];

增強的內(nèi)聯(lián)機制
現(xiàn)在可無需額外的標(biāo)簽,直接在文本中輸出數(shù)據(jù):

This product is called [[${product.name}]] and it"s great!
var a = [[${msg}]];
4、片段(Fragment)表達式

Thymeleaf 3.0 引入了一個新的片段表達式。形如:~{commons::footer}。
該特性十分有用(比如解決定義通用的header和footer的問題)
base.html


  The awesome application

  
  
  
  

  
  


main.html


  Awesome - Main
  
  

片段經(jīng)常和th:insert or th:replace一起使用

...

~{::selector} or ~{this::selector}引用本模板內(nèi)的片段

不使用th:fragment定義的片段的情況:

© 2011 The Good Thymes Virtual Grocery
th:insert and th:replace (and th:include)的區(qū)別:

th:insert 插入片段本身

th:replace actually replaces its host tag with the specified fragment.

th:include 與th:insert不同的是,它插入的是片段解析后的內(nèi)容

5、無操作標(biāo)記(token)
Thymeleaf 3.0 另一個新的特性就是無操作(NO-OP no-operation)標(biāo)記,下劃線”_”,代表什么也不做。
例如:
no user authenticated
當(dāng)user.name 為空的時候,直接輸出標(biāo)簽體中的內(nèi)容

注釋

普通html注釋:
Thymeleaf 注釋:

1、

2、 
  
you can see me only before Thymeleaf processes me!
3、
html內(nèi)聯(lián)
//不會轉(zhuǎn)義時

The message is "[(${msg})]"

//等價于

The message is "This is great!"

//轉(zhuǎn)義時

The message is "[[${msg}]]"

//等價于

The message is "This is great!"

//禁用內(nèi)聯(lián)

A double array looks like this: [[1, 2, 3], [4, 5]]!

//js內(nèi)聯(lián) //css內(nèi)聯(lián)
Markup Selector Syntax

http://www.thymeleaf.org/doc/...

demo:

https://github.com/jmiguelsam...

https://github.com/jmiguelsam...

https://github.com/jmiguelsam...

https://github.com/tengj/Spri...

參考:
http://www.thymeleaf.org/doc/...
http://www.thymeleaf.org/doc/...
http://blog.csdn.net/u0127068...
https://www.tianmaying.com/tu...
http://www.thymeleaf.org/doc/...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70154.html

相關(guān)文章

  • 工具集核心教程 | 第三篇: Thymeleaf模板引擎入門到進階

    摘要:介紹簡單說,是一個跟類似的模板引擎,它可以完全替代。不包含標(biāo)記刪除但刪除其所有的孩子。公眾號回復(fù)全棧,領(lǐng)取前端,,產(chǎn)品經(jīng)理,微信小程序,等資源合集大放送。公眾號回復(fù)面試,領(lǐng)取面試實戰(zhàn)學(xué)習(xí)資源。 thymeleaf介紹 簡單說, Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 JSP。相較與其他的模板引擎,它有如下三個極吸引人的特點:...

    abson 評論0 收藏0
  • Spring-Boot學(xué)習(xí)筆記

    摘要:學(xué)習(xí)筆記使用很容易創(chuàng)建一個獨立運行運行內(nèi)嵌容器準(zhǔn)生產(chǎn)級別的基于框架的項目,使用你可以不用或者只需要很少的配置。異常消息如果這個錯誤是由異常引起的。錯誤發(fā)生時請求的路徑。 Spring-Boot 1.5 學(xué)習(xí)筆記 使用Spring Boot很容易創(chuàng)建一個獨立運行(運行jar,內(nèi)嵌Servlet容器)、準(zhǔn)生產(chǎn)級別的基于Spring框架的項目,使用Spring Boot你可以不用或者只需要很...

    curlyCheng 評論0 收藏0
  • springboot學(xué)習(xí)日志(二)-- thymeleaf學(xué)習(xí)

    摘要:本次學(xué)習(xí)如何使用以及相關(guān)語法在上一章寫的那樣引入包到工程同理配置配置模板設(shè)置在需要引用添加引用頭下面記錄一下的模板語法和稍微有些出入不過好在不需要修改文件類型直接將進行頭部引用就可以使用標(biāo)簽引入路徑或地址絕對路徑進行訪問相對路徑進 本次學(xué)習(xí)如何使用thymeleaf以及相關(guān)語法1、在上一章寫的那樣 引入jar包到maven工程 org.springframewor...

    tanglijun 評論0 收藏0
  • springboot學(xué)習(xí)日志(二)-- thymeleaf學(xué)習(xí)

    摘要:本次學(xué)習(xí)如何使用以及相關(guān)語法在上一章寫的那樣引入包到工程同理配置配置模板設(shè)置在需要引用添加引用頭下面記錄一下的模板語法和稍微有些出入不過好在不需要修改文件類型直接將進行頭部引用就可以使用標(biāo)簽引入路徑或地址絕對路徑進行訪問相對路徑進 本次學(xué)習(xí)如何使用thymeleaf以及相關(guān)語法1、在上一章寫的那樣 引入jar包到maven工程 org.springframewor...

    keithyau 評論0 收藏0
  • Spring Boot簡略入門手冊

    摘要:事實上,的依賴包已經(jīng)包含了,因此準(zhǔn)確地說,只用即可。這個文件的內(nèi)容初始是空的,表示全部使用的默認(rèn)值。的自動刷新很久之前提到的依賴包終于派上用場了。修改任意文件后,按執(zhí)行,瀏覽器就會在編譯完成后自動刷新。 引言 說起用Java語言來搭建Web項目,那么最令人熟知,也應(yīng)用最廣的框架就是Spring MVC了。不過,Spring MVC的Web項目搭建起來并不是一件簡單的事,而如果你也像我這...

    MobService 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<