国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Thymeleaf 3學習筆記

stonezhu / 1566人閱讀

摘要:目前最新版本作為官方推薦模板引擎,而且支持純瀏覽器展現模板表達式在脫離運行環境下不污染結構是時候了解一番了。當前數目,從開始。

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

安裝與初始化配置

與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
#開發時關閉緩存,不然沒法看到實時頁面
spring.thymeleaf.cache=false
#thymeleaf end

具體可以配置的參數可以查看 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標簽內部,不然不會生效
#{}是國際化支持取值的符號
注意:th:text與th:utext的區別,輸出中文時應該使用th:utext
${..}實際語法是:OGNL(非web),SpEL(web) ,支持的內置變量

便捷部分

${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

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

...
//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路徑,默認訪問static下的css文件夾

類似的標簽有: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、運算符
在表達式中可以使用各類算術運算符,例如+, -, *, /, %

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

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

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屬性進行條件判斷,標簽只有在th:if中條件成立時才顯示,th:unless于th:if恰好相反,只有表達式中的條件不成立,才會顯示其內容。

Login

Switch
Thymeleaf同樣支持多路選擇Switch結構,默認屬性default可以用*表示:

User is an administrator

User is a manager

User is some other thing

5.循環


      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后綴訪問狀態變量

    Onions
    2.41
    yes
  

th:each內置迭代狀態屬性:

index ,當前索引,從0開始。

count,當前數目,從1開始。

size,總大小

current,當前值

even/odd boolean properties.

first boolean property.

last boolean property.

6、設置html標簽屬性

//which is equivalent:


//append


Thymeleaf 3中的一些變化和特性

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

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

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

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

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

增強的內聯機制
現在可無需額外的標簽,直接在文本中輸出數據:

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
  
  

片段經常和th:insert or th:replace一起使用

...

~{::selector} or ~{this::selector}引用本模板內的片段

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

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

th:insert 插入片段本身

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

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

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

注釋

普通html注釋:
Thymeleaf 注釋:

1、

2、 
  
you can see me only before Thymeleaf processes me!
3、
html內聯
//不會轉義時

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

//等價于

The message is "This is great!"

//轉義時

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

//等價于

The message is "This is great!"

//禁用內聯

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

//js內聯 //css內聯
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/...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70154.html

相關文章

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

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

    abson 評論0 收藏0
  • Spring-Boot學習筆記

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

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

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

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

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

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

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

    MobService 評論0 收藏0

發表評論

0條評論

stonezhu

|高級講師

TA的文章

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