天天看點

JAVA入門[22]—thymeleaf

一、thymeleaf官網

1.修改pom.xml,引入相關依賴。

<code>&lt;dependencies&gt;</code>

<code>        </code><code>&lt;dependency&gt;</code>

<code>            </code><code>&lt;groupId&gt;junit&lt;/groupId&gt;</code>

<code>            </code><code>&lt;artifactId&gt;junit&lt;/artifactId&gt;</code>

<code>            </code><code>&lt;version&gt;</code><code>3.8</code><code>.</code><code>1</code><code>&lt;/version&gt;</code>

<code>            </code><code>&lt;scope&gt;test&lt;/scope&gt;</code>

<code>        </code><code>&lt;/dependency&gt;</code>

<code>        </code><code>&lt;!-- https:</code><code>//mvnrepository.com/artifact/org.thymeleaf/thymeleaf --&gt;</code>

<code>            </code><code>&lt;groupId&gt;org.thymeleaf&lt;/groupId&gt;</code>

<code>            </code><code>&lt;artifactId&gt;thymeleaf&lt;/artifactId&gt;</code>

<code>            </code><code>&lt;version&gt;</code><code>3.0</code><code>.</code><code>2</code><code>.RELEASE&lt;/version&gt;</code>

<code>        </code><code>&lt;!-- https:</code><code>//mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring4 --&gt;</code>

<code>            </code><code>&lt;artifactId&gt;thymeleaf-spring4&lt;/artifactId&gt;</code>

<code>            </code><code>&lt;version&gt;</code><code>2.1</code><code>.</code><code>2</code><code>.RELEASE&lt;/version&gt;</code>

<code>&lt;/dependendies&gt; </code>

2.xml方式配置thymeleaf視圖解析器:

<code>&lt;!-- Thymeleaf View Resolver - implementation of Spring's ViewResolver </code><code>interface</code> <code>--&gt;</code>

<code>    </code><code>&lt;bean id=</code><code>"viewResolver"</code> <code>class</code><code>=</code><code>"org.thymeleaf.spring4.view.ThymeleafViewResolver"</code><code>&gt;</code>

<code>        </code><code>&lt;property name=</code><code>"templateEngine"</code> <code>ref=</code><code>"templateEngine"</code> <code>/&gt;</code>

<code>        </code><code>&lt;property name=</code><code>"characterEncoding"</code> <code>value=</code><code>"UTF-8"</code> <code>/&gt;</code>

<code>    </code><code>&lt;/bean&gt;</code>

<code>    </code><code>&lt;!-- Thymeleaf Template Engine (Spring4-specific version) --&gt;</code>

<code>    </code><code>&lt;bean id=</code><code>"templateEngine"</code> <code>class</code><code>=</code><code>"org.thymeleaf.spring4.SpringTemplateEngine"</code><code>&gt;</code>

<code>        </code><code>&lt;property name=</code><code>"templateResolvers"</code><code>&gt;</code>

<code>            </code><code>&lt;set&gt;</code>

<code>                </code><code>&lt;ref bean=</code><code>"templateResolver"</code> <code>/&gt;</code>

<code>            </code><code>&lt;/set&gt;</code>

<code>        </code><code>&lt;/property&gt;</code>

<code>    </code><code>&lt;!-- Thymeleaf Template Resolver --&gt;</code>

<code>    </code><code>&lt;bean id=</code><code>"templateResolver"</code> <code>class</code><code>=</code><code>"org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"</code><code>&gt;</code>

<code>        </code><code>&lt;property name=</code><code>"prefix"</code> <code>value=</code><code>"/WEB-INF/templates/"</code> <code>/&gt;</code>

<code>        </code><code>&lt;property name=</code><code>"templateMode"</code> <code>value=</code><code>"HTML"</code> <code>/&gt;</code>

<code>        </code><code>&lt;property name=</code><code>"suffix"</code> <code>value=</code><code>".html"</code><code>&gt;&lt;/property&gt;</code>

<code>        </code><code>&lt;property name=</code><code>"characterEncoding"</code> <code>value=</code><code>"UTF-8"</code><code>&gt;&lt;/property&gt;</code>

3.在controller中為變量name指派。

<code>@RequestMapping</code><code>(value=</code><code>"/index"</code><code>)</code>

<code>public</code> <code>String index(Model model){</code>

<code>    </code><code>model.addAttribute(</code><code>"name"</code><code>,</code><code>"world"</code><code>);</code>

<code>    </code><code>return</code> <code>"index.html"</code><code>;</code>

<code>}</code>

4.在index.html中使用thymeleaf文法讀取變量name的值。

<code>&lt;!DOCTYPE html&gt;</code>

<code>&lt;html xmlns=</code><code>"http://www.w3.org/1999/xhtml"</code> <code>xmlns:th=</code><code>"http://www.thymeleaf.org"</code><code>&gt;</code>

<code>&lt;head&gt;</code>

<code>    </code><code>&lt;title&gt;Title&lt;/title&gt;</code>

<code>&lt;/head&gt;</code>

<code>&lt;body&gt;</code>

<code>&lt;div&gt;your name is:&lt;span th:text=</code><code>"${name}"</code><code>&gt;&lt;/span&gt;&lt;/div&gt;</code>

<code>&lt;/body&gt;</code>

<code>&lt;/html&gt;</code>

1.如何添加連結:

<code>&lt;a th:href=</code><code>"@{/category/index}"</code><code>&gt;首頁&lt;/a&gt;</code>

2.表單綁定示例:

<code>&lt;form method=</code><code>"post"</code> <code>th:object=</code><code>"${cate}"</code> <code>th:action=</code><code>"@{/category/save}"</code> <code>enctype=</code><code>"multipart/form-data"</code><code>&gt;</code>

<code>        </code><code>&lt;table&gt;</code>

<code>            </code><code>&lt;tr&gt;</code>

<code>                </code><code>&lt;td&gt;id:&lt;/td&gt;</code>

<code>                </code><code>&lt;td&gt;&lt;input type=</code><code>"text"</code> <code>th:field=</code><code>"*{cateId}"</code><code>&gt;&lt;/td&gt;</code>

<code>            </code><code>&lt;/tr&gt;</code>

<code>                </code><code>&lt;td&gt;name:&lt;/td&gt;</code>

<code>                </code><code>&lt;td&gt;&lt;input type=</code><code>"text"</code> <code>th:field=</code><code>"*{cateName}"</code><code>&gt;&lt;/td&gt;</code>

<code>                </code><code>&lt;td&gt;file:&lt;/td&gt;</code>

<code>                </code><code>&lt;td&gt;</code>

<code>                    </code><code>&lt;input type=</code><code>"file"</code> <code>accept=</code><code>"image/jpeg,image/png,image/jpg"</code> <code>name=</code><code>"picture"</code><code>&gt;</code>

<code>                </code><code>&lt;/td&gt;</code>

<code>                </code><code>&lt;td colspan=</code><code>"2"</code><code>&gt;</code>

<code>                    </code><code>&lt;input type=</code><code>"submit"</code> <code>value=</code><code>"送出"</code><code>&gt;</code>

<code>        </code><code>&lt;/table&gt;</code>

<code>    </code><code>&lt;/form&gt;</code>

3.展示文本

<code>&lt;td th:text=</code><code>"${r.name}"</code><code>&gt;&lt;/td&gt;</code>

如何替換子字元串

<code>&lt;span th:text=</code><code>"|welcome,${name}|"</code><code>&gt;&lt;/span&gt;</code>

如何轉換日期格式

<code>${#dates.format(v.AddDate,</code><code>'yyyy-MM-dd HH:mm:ss'</code><code>)}</code>

4.如何在js讀取背景資料

<code>var url=</code><code>"[[${url}]]"</code><code>;</code>

5.條件表達式

<code>&lt;td th:text=</code><code>"(${r.deleteFlag}==0)?'正常':'删除'"</code><code>&gt;&lt;/td&gt;</code>

6.thymeleaf如何實作switch選擇

<code>&lt;td th:</code><code>switch</code><code>=</code><code>"${r.type}"</code><code>&gt;</code>

<code>    </code><code>&lt;span th:</code><code>case</code><code>=</code><code>"page"</code><code>&gt;頁面&lt;/span&gt;</code>

<code>    </code><code>&lt;span th:</code><code>case</code><code>=</code><code>"module"</code><code>&gt;子產品&lt;/span&gt;</code>

<code>    </code><code>&lt;span th:</code><code>case</code><code>=</code><code>"*"</code><code>&gt;其他&lt;/span&gt;</code>

<code>&lt;/td&gt;</code>

注意:預設值 用th:case="*"

7.th:object文法

首先在controller為對象指派

<code>@Controller</code>

<code>@RequestMapping</code><code>(</code><code>"/demo"</code><code>)</code>

<code>public</code> <code>class</code> <code>DemoController {</code>

<code>    </code><code>@RequestMapping</code><code>(</code><code>"/index"</code><code>)</code>

<code>    </code><code>public</code> <code>String index(Model model){</code>

<code>        </code><code>OrgResource resource=</code><code>new</code> <code>OrgResource();</code>

<code>        </code><code>resource.setId(</code><code>"11"</code><code>);</code>

<code>        </code><code>resource.setName(</code><code>"test"</code><code>);</code>

<code>        </code><code>model.addAttribute(</code><code>"resource"</code><code>,resource);</code>

<code>        </code><code>return</code> <code>"demo/index.html"</code><code>;</code>

<code>    </code><code>}</code>

使用*{}文法可以友善讀取th:object對象的屬性。

<code>&lt;div th:object=</code><code>"${resource}"</code><code>&gt;</code>

<code>    </code><code>&lt;div th:text=</code><code>"*{id}"</code><code>&gt;&lt;/div&gt;</code>

<code>    </code><code>&lt;div th:text=</code><code>"*{name}"</code><code>&gt;&lt;/div&gt;</code>

<code>&lt;/div&gt;</code>

8.疊代 th:each

<code>&lt;th:block th:each=</code><code>"r,iterstat:${resources}"</code><code>&gt;</code>

<code>    </code><code>&lt;tr th:</code><code>class</code><code>=</code><code>"${iterstat.odd}?'odd'"</code><code>&gt;</code>

<code>        </code><code>&lt;td th:text=</code><code>"${r.orderNo}"</code><code>&gt;&lt;/td&gt;</code>

<code>        </code><code>&lt;td th:</code><code>switch</code><code>=</code><code>"${r.type}"</code><code>&gt;</code>

<code>            </code><code>&lt;span th:</code><code>case</code><code>=</code><code>"page"</code><code>&gt;頁面&lt;/span&gt;</code>

<code>            </code><code>&lt;span th:</code><code>case</code><code>=</code><code>"module"</code><code>&gt;子產品&lt;/span&gt;</code>

<code>        </code><code>&lt;/td&gt;</code>

<code>        </code><code>&lt;td th:text=</code><code>"(${r.deleteFlag}==0)?'正常':'删除'"</code><code>&gt;&lt;/td&gt;</code>

<code>        </code><code>&lt;td th:</code><code>switch</code><code>=</code><code>"${r.deleteFlag}"</code><code>&gt;</code>

<code>            </code><code>&lt;span th:</code><code>case</code><code>=</code><code>"0"</code><code>&gt;&lt;a&gt;删除&lt;/a&gt;&lt;/span&gt;</code>

<code>            </code><code>&lt;span th:</code><code>case</code><code>=</code><code>"1"</code><code>&gt;&lt;a&gt;恢複&lt;/a&gt;&lt;/span&gt;</code>

<code>    </code><code>&lt;/tr&gt;</code>

<code>&lt;/th:block&gt;</code>

9.如何使用Fragment layout布局

首先建立layout.html作為布局模闆。

<code>&lt;html lang=</code><code>"zh-CN"</code> <code>xmlns:layout=</code><code>"http://www.thymeleaf.org"</code> <code>xmlns:th=</code><code>"http://www.thymeleaf.org"</code><code>&gt;</code>

<code>    </code><code>&lt;meta charset=</code><code>"UTF-8"</code><code>&gt;</code>

<code>……</code>

<code>&lt;div layout:fragment=</code><code>"content"</code><code>&gt;&lt;/div&gt;</code>

然後在index.html中使用layout,并用頁面具體内容替代content fragment。

<code>&lt;html layout:decorator=</code><code>"task/layout"</code> <code>xmlns:layout=</code><code>"http://www.w3.org/1999/xhtml"</code><code>&gt;</code>

<code>&lt;div layout:fragment=</code><code>"content"</code><code>&gt;</code>

<code>  </code><code>測試頁面</code>

第一次使用layout布局的時候,調試了好半天就是不生效。後來找到了原因,dependency需要添加:

<code>&lt;dependency&gt;</code>

<code>    </code><code>&lt;groupId&gt;nz.net.ultraq.thymeleaf&lt;/groupId&gt;</code>

<code>    </code><code>&lt;artifactId&gt;thymeleaf-layout-dialect&lt;/artifactId&gt;</code>

<code>    </code><code>&lt;version&gt;${nz.net.ultraq.thymeleaflayout-version}&lt;/version&gt;</code>

<code>&lt;/dependency&gt;</code>

10.如何用if條件動态調整form action

<code>&lt;form th:action=</code><code>"@{/Video/{path}(path=${isCollect}?'CollectVideoList':'VideoList')}"</code><code>&gt;</code>

11.thymeleaf回顯富文本編輯器内容

将th:text換成th:utext即可。

    本文轉自 陳敬(Cathy) 部落格園部落格,原文連結:http://www.cnblogs.com/janes/p/7234465.html,如需轉載請自行聯系原作者