热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot入门一构建简单工程

环境准备:jdk1.7(推荐)以上,tomcat8(推荐)以上,或者使用插件自带。mevan插件3.2以上,eclipse编辑工具pom文件基本配置如下

环境准备:jdk1.7(推荐)以上,tomcat8(推荐)以上,或者使用插件自带。mevan插件3.2以上,eclipse编辑工具
pom文件基本配置如下



project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
modelVersion 4.0.0 /modelVersion
groupId springboot /groupId
artifactId weboot /artifactId
version 0.0.1-SNAPSHOT /version
packaging jar /packaging
name weboot /name
url http://maven.apache.org /url
properties
project.build.sourceEncoding UTF-8 /project.build.sourceEncoding
/properties
parent
!--Spring Boot基础父类,其中包含了很多必要的jar包,如果不使用父类,则需要自己去依赖这些jars --
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-parent /artifactId
version 1.3.3.RELEASE /version
/parent
dependencies
dependency
groupId junit /groupId
artifactId junit /artifactId
version 3.8.1 /version
scope test /scope
/dependency
!-- web程序的启动项依赖,通过此依赖可引入内嵌的tomcat等web必须的jars --
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-web /artifactId
/dependency
!-- spring-boot aop- --
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-aop /artifactId
/dependency
!-- thymeleaf程序的启动项依赖,spring-boot对thymeleaf模板引擎支持最好,建议模板引擎使用此框架 --
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-thymeleaf /artifactId
/dependency
!-- mysql依赖,使用spring-data-jpa需要指定一个数据库方言,用于连接数据库,即mysql驱动 --
dependency
groupId mysql /groupId
artifactId mysql-connector-java /artifactId
/dependency
/dependencies
build
plugins
!-- 通过maven构建的插件 --
plugin
groupId org.springframework.boot /groupId
artifactId spring-boot-maven-plugin /artifactId
/plugin
/plugins
/build
/project

手动添加 config,templates,static 文件夹 分别存放配置文件,模板,静态文件(js,css等)
模板格式其一详解

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。



Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。

Thymeleaf的模板还可以用作工作原型,Thymeleaf会在运行期替换掉静态值。例如下面的html文件,当作为静态文件时,product name显示为Red Chair,当运行在容器中并提供product这个对象时,product name的值会自动替换为product.description对应的值。

1.bean值替换

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 2 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 1: bean values /h1
h2 Product information /h2
dl
dt Product name /dt
dd th:text="${product.description}" Red Chair /dd
dt Product price /dt
dd th:text="${product.price}" 350 /dd
dt Product available from /dt
dd th:text="${product.availableFrom}" 2014-12-01 /dd
/dl
/body
/html

2.简单数据转换(数字,日期)

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 2 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 2: bean values /h1
h2 Product information /h2
dl
dt Product name /dt
dd th:text="${product.description}" red Chair /dd
dt Product price /dt
dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}" 180 /dd
dt Product available from /dt
dd th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}" 2014-12-01 /dd
/dl
/body
/html

3.字符串拼接

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 3 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 3: string concatenation /h1
h2 Product information /h2
dl
dt Product price /dt
dd th:text="${'$'+product.price}" 235 /dd
/dl
/body
/html

4.国际化

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title th:text="#{tutorial.exercise4}" Thymeleaf tutorial: exercise 4 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 th:text="#{tutorial.exercise4}" Thymeleaf tutorial - Solution for exercise 4: internationalization /h1
h2 th:text="#{product.info}" Product information /h2
dl
dt th:text="#{product.name}" Product name /dt
dd th:text="${product.description}" Red chair /dd
dt th:text="#{product.price}" Product price /dt
dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}" 350 /dd
dt th:text="#{product.available}" Product available from /dt
dd th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}" 28-Jun-2013 /dd
/dl
/body
/html

此时html需要相应的配置文件。例如如下配置文件:

en:

tutorial.exercise4=Thymeleaf tutorial - exercise 4: internationalization
product.info=Product information
product.name=Product name
product.price=Product price
product.available=Product available from
back=Back

fr

tutorial.exercise4=Tutorial De Thymeleaf - exercice 4: l'internationalisation
product.info=Information du produit
product.name=Nom du produit
product.price=Prix du produit
product.available=Produit disponible depuis
back=Revenir

5.转义和非转义文本

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 5 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 5: escaped and unescaped text /h1
div th:text="${html}"
Some escaped text
/div
div th:utext="${html}"
Some unescaped text
/div
/body
/html

上述两个div分别生成的html代码为

div This is an em HTML /em text. b Enjoy yourself! /b /div
div This is an em HTML /em text. b Enjoy yourself! /b /div

6.迭代

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 6 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 6: iteration /h1
h2 Product list /h2
table
thead
tr
th Description /th
th Price /th
th Available from /th
/tr
/thead
tbody th:remove="all-but-first"
tr th:each="product:${productList}"
td th:text="${product.description}" Red Chair /td
td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}" $123 /td
td th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}" 2014-12-01 /td
/tr
tr
td White table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td Reb table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td Blue table /td
td $200 /td
td 15-Jul-2013 /td
/tr
/tbody
/table
/body
/html

7.迭代统计

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 7 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 7: iteration stats /h1
h2 Product list /h2
table
thead
tr
th Index /th
th Description /th
th Price /th
th Available from /th
/tr
/thead
tbody th:remove="all-but-first"
tr th:each="product : ${productList}"
td th:text="${productStat.count}" 1 /td
td th:text="${product.description}" Red chair /td
td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}" $350 /td
td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}" 28-Jun-2013 /td
/tr
tr
td 2 /td
td White table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td 3 /td
td Reb table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td 4 /td
td Blue table /td
td $200 /td
td 15-Jul-2013 /td
/tr
/tbody
/table
/body
/html

8.条件判断

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 8 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 8: conditions /h1
h2 Product list /h2
table
thead
tr
th Description /th
th Price /th
th Available from /th
th /th
/tr
/thead
tbody
tr th:each="product : ${productList}"
td th:text="${product.description}" Red chair /td
td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}" $350 /td
td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}" 28-Jun-2013 /td
td
span th:if="${product.price lt 100}" Special offer! /span
/td
/tr
/tbody
/table
/body
/html

9.更多条件判断

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 9 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 9: more on conditions /h1
h2 Customer list /h2
table
thead
tr
th First name /th
th Last name /th
th Gender /th
th Payment method /th
th Balance /th
/tr
/thead
tbody th:remove="all-but-first"
tr th:each="customer : ${customerList}"
td th:text="${customer.firstName}" Peter /td
td th:text="${customer.lastName}" Jackson /td
!--
Use th:switch for selecting content based on ${customer.gender}.
As genre can be null if unknown, better use ${customer.gender?.name()}
for obtaining its name.
--
td th:switch="${customer.gender?.name()}"
img th:case="'MALE'" src="../../../images/male.png" th:src="@{/images/male.png}" alt="Male" / !-- Use "/images/male.png" image --
img th:case="'FEMALE'" src="../../../images/female.png" th:src="@{/images/female.png}" alt="Female" / !-- Use "/images/female.png" image --
span th:case="*" Unknown /span
/td
td
span th:text="${customer.paymentMethod.description}" Direct debit /span
!-- Show next message only when paymentMethod is not CREDIT_CARD --
span th:unless="${customer.paymentMethod.name() == 'CREDIT_CARD'}"
Payment must be done in the next 4 days
/span
/td
!-- Add when balance is greater than 10000 --
td th:class="${customer.balance gt 10000} ? 'enhanced'" th:text="${customer.balance}" 350 /td
/tr
tr
td Mary /td
td Johanson /td
td img src="../../../images/female.png" / /td
td span Credit card /span /td
td 5000 /td
/tr
tr
td Robert /td
td Allen /td
td img src="../../../images/male.png" / /td
td
span Credit card /span
span Payment must be done in the next 4 days /span
/td
td 50000 /td
/tr
/tbody
/table
/body
/html

10.Spring表达式语言

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 10 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 10: Spring Expression language /h1
h2 Arithmetic expressions /h2
p Four multiplied by minus six multiplied by minus two module seven: /p
p th:text="${4 * -6 * -2 % 7}" 123 /p
h2 Object navigation /h2
p Description field of paymentMethod field of the third element of customerList bean: /p
p th:text="${customerList[2].paymentMethod.description}" Credit card /p
h2 Object instantiation /h2
p Current time milliseconds: /p
p th:text="${new java.util.Date().getTime()}" 22-Jun-2013 /p
h2 T operator /h2
p Random number: /p
p th:text="${T(java.lang.Math).random()}" 123456 /p
/body
/html

11.超链接

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 11 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 11: links /h1
h2 Product actions /h2
ul
li a href="#" th:href="@{/exercise11/product.html(action='view')}" View product /a /li
li a href="#" th:href="@{/exercise11/product.html(action='edit')}" Edit product /a /li
/ul
/body
/html

12.表单

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 12 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 12: forms /h1
h2 Customer edition /h2
form action="saveCustomer.html" th:action="@{/exercise12/saveCustomer.html}" th:object="${customer}" method="post"
input type="hidden" th:field="*{id}" /
label for="firstName" First name: /label
input type="text" th:field="*{firstName}" value="John" /
label for="lastName" Last name: /label
input type="text" th:field="*{lastName}" value="Wayne" /
Genre:
div th:each="gender : ${genders}"
input type="radio" th:value="${gender}" th:field="*{gender}" /
label th:for="${#ids.prev('gender')}" th:text="${gender.description}" Male /label
/div
div th:remove="all"
input type="radio" /
label Female /label
/div
label for="paymentMethod" Payment method: /label
select th:field="*{paymentMethod}" th:remove="all-but-first"
option th:each="paymentMethod : ${paymentMethods}"
33 th:value="${paymentMethod}" th:text="${paymentMethod.description}" Credit card /option
option Another payment method /option
option Another payment method /option
/select
label for="balance" Balance (dollars): /label
input type="text" th:field="*{balance}" size="10" value="2500" /
input type="submit" /
/form
/body
/html

13.内联

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 13 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 13: inlining /h1
h2 Birthday email /h2
form action="#" method="post"
label for="body" Message body: /label
textarea id="body" name="body" th:inline="text"
Dear [[${customerName}]],
it is our sincere pleasure to congratulate your in your birthday:
Happy birthday [[${customerName}]]!!!
See you soon, [[${customerName}]].
Regards,
The Thymeleaf team
/textarea
input type="submit" value="Send mail" /
/form
/body
/html

--------------------------------------------------------------------------------------------------------------

以上资料都来自http://itutorial.thymeleaf.org/。如果对Thymeleaf有兴趣,可以试试他们做的交互教程,很是好用。上面的html代码都是来自thymeleaf的交互教程

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。

Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。

Thymeleaf的模板还可以用作工作原型,Thymeleaf会在运行期替换掉静态值。例如下面的html文件,当作为静态文件时,product name显示为Red Chair,当运行在容器中并提供product这个对象时,product name的值会自动替换为product.description对应的值。

1.bean值替换

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 2 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 1: bean values /h1
h2 Product information /h2
dl
dt Product name /dt
dd th:text="${product.description}" Red Chair /dd
dt Product price /dt
dd th:text="${product.price}" 350 /dd
dt Product available from /dt
dd th:text="${product.availableFrom}" 2014-12-01 /dd
/dl
/body
/html

2.简单数据转换(数字,日期)

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 2 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 2: bean values /h1
h2 Product information /h2
dl
dt Product name /dt
dd th:text="${product.description}" red Chair /dd
dt Product price /dt
dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}" 180 /dd
dt Product available from /dt
dd th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}" 2014-12-01 /dd
/dl
/body
/html

3.字符串拼接

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 3 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 3: string concatenation /h1
h2 Product information /h2
dl
dt Product price /dt
dd th:text="${'$'+product.price}" 235 /dd
/dl
/body
/html

4.国际化

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title th:text="#{tutorial.exercise4}" Thymeleaf tutorial: exercise 4 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 th:text="#{tutorial.exercise4}" Thymeleaf tutorial - Solution for exercise 4: internationalization /h1
h2 th:text="#{product.info}" Product information /h2
dl
dt th:text="#{product.name}" Product name /dt
dd th:text="${product.description}" Red chair /dd
dt th:text="#{product.price}" Product price /dt
dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}" 350 /dd
dt th:text="#{product.available}" Product available from /dt
dd th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}" 28-Jun-2013 /dd
/dl
/body
/html

此时html需要相应的配置文件。例如如下配置文件:

en:

tutorial.exercise4=Thymeleaf tutorial - exercise 4: internationalization
product.info=Product information
product.name=Product name
product.price=Product price
product.available=Product available from
back=Back

fr

tutorial.exercise4=Tutorial De Thymeleaf - exercice 4: l'internationalisation
product.info=Information du produit
product.name=Nom du produit
product.price=Prix du produit
product.available=Produit disponible depuis
back=Revenir

5.转义和非转义文本

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 5 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 5: escaped and unescaped text /h1
div th:text="${html}"
Some escaped text
/div
div th:utext="${html}"
Some unescaped text
/div
/body
/html

上述两个div分别生成的html代码为

div This is an em HTML /em text. b Enjoy yourself! /b /div
div This is an em HTML /em text. b Enjoy yourself! /b /div

6.迭代

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 6 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 6: iteration /h1
h2 Product list /h2
table
thead
tr
th Description /th
th Price /th
th Available from /th
/tr
/thead
tbody th:remove="all-but-first"
tr th:each="product:${productList}"
td th:text="${product.description}" Red Chair /td
td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}" $123 /td
td th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}" 2014-12-01 /td
/tr
tr
td White table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td Reb table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td Blue table /td
td $200 /td
td 15-Jul-2013 /td
/tr
/tbody
/table
/body
/html

7.迭代统计

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 7 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 7: iteration stats /h1
h2 Product list /h2
table
thead
tr
th Index /th
th Description /th
th Price /th
th Available from /th
/tr
/thead
tbody th:remove="all-but-first"
tr th:each="product : ${productList}"
td th:text="${productStat.count}" 1 /td
td th:text="${product.description}" Red chair /td
td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}" $350 /td
td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}" 28-Jun-2013 /td
/tr
tr
td 2 /td
td White table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td 3 /td
td Reb table /td
td $200 /td
td 15-Jul-2013 /td
/tr
tr
td 4 /td
td Blue table /td
td $200 /td
td 15-Jul-2013 /td
/tr
/tbody
/table
/body
/html

8.条件判断

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 8 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 8: conditions /h1
h2 Product list /h2
table
thead
tr
th Description /th
th Price /th
th Available from /th
th /th
/tr
/thead
tbody
tr th:each="product : ${productList}"
td th:text="${product.description}" Red chair /td
td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}" $350 /td
td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}" 28-Jun-2013 /td
td
span th:if="${product.price lt 100}" Special offer! /span
/td
/tr
/tbody
/table
/body
/html

9.更多条件判断

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 9 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 9: more on conditions /h1
h2 Customer list /h2
table
thead
tr
th First name /th
th Last name /th
th Gender /th
th Payment method /th
th Balance /th
/tr
/thead
tbody th:remove="all-but-first"
tr th:each="customer : ${customerList}"
td th:text="${customer.firstName}" Peter /td
td th:text="${customer.lastName}" Jackson /td
!--
Use th:switch for selecting content based on ${customer.gender}.
As genre can be null if unknown, better use ${customer.gender?.name()}
for obtaining its name.
--
td th:switch="${customer.gender?.name()}"
img th:case="'MALE'" src="../../../images/male.png" th:src="@{/images/male.png}" alt="Male" / !-- Use "/images/male.png" image --
img th:case="'FEMALE'" src="../../../images/female.png" th:src="@{/images/female.png}" alt="Female" / !-- Use "/images/female.png" image --
span th:case="*" Unknown /span
/td
td
span th:text="${customer.paymentMethod.description}" Direct debit /span
!-- Show next message only when paymentMethod is not CREDIT_CARD --
span th:unless="${customer.paymentMethod.name() == 'CREDIT_CARD'}"
Payment must be done in the next 4 days
/span
/td
!-- Add when balance is greater than 10000 --
td th:class="${customer.balance gt 10000} ? 'enhanced'" th:text="${customer.balance}" 350 /td
/tr
tr
td Mary /td
td Johanson /td
td img src="../../../images/female.png" / /td
td span Credit card /span /td
td 5000 /td
/tr
tr
td Robert /td
td Allen /td
td img src="../../../images/male.png" / /td
td
span Credit card /span
span Payment must be done in the next 4 days /span
/td
td 50000 /td
/tr
/tbody
/table
/body
/html

10.Spring表达式语言

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 10 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 10: Spring Expression language /h1
h2 Arithmetic expressions /h2
p Four multiplied by minus six multiplied by minus two module seven: /p
p th:text="${4 * -6 * -2 % 7}" 123 /p
h2 Object navigation /h2
p Description field of paymentMethod field of the third element of customerList bean: /p
p th:text="${customerList[2].paymentMethod.description}" Credit card /p
h2 Object instantiation /h2
p Current time milliseconds: /p
p th:text="${new java.util.Date().getTime()}" 22-Jun-2013 /p
h2 T operator /h2
p Random number: /p
p th:text="${T(java.lang.Math).random()}" 123456 /p
/body
/html

11.超链接

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 11 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Answer for exercise 11: links /h1
h2 Product actions /h2
ul
li a href="#" th:href="@{/exercise11/product.html(action='view')}" View product /a /li
li a href="#" th:href="@{/exercise11/product.html(action='edit')}" Edit product /a /li
/ul
/body
/html

12.表单

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 12 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 12: forms /h1
h2 Customer edition /h2
form action="saveCustomer.html" th:action="@{/exercise12/saveCustomer.html}" th:object="${customer}" method="post"
input type="hidden" th:field="*{id}" /
label for="firstName" First name: /label
input type="text" th:field="*{firstName}" value="John" /
label for="lastName" Last name: /label
input type="text" th:field="*{lastName}" value="Wayne" /
Genre:
div th:each="gender : ${genders}"
input type="radio" th:value="${gender}" th:field="*{gender}" /
label th:for="${#ids.prev('gender')}" th:text="${gender.description}" Male /label
/div
div th:remove="all"
input type="radio" /
label Female /label
/div
label for="paymentMethod" Payment method: /label
select th:field="*{paymentMethod}" th:remove="all-but-first"
option th:each="paymentMethod : ${paymentMethods}"
33 th:value="${paymentMethod}" th:text="${paymentMethod.description}" Credit card /option
option Another payment method /option
option Another payment method /option
/select
label for="balance" Balance (dollars): /label
input type="text" th:field="*{balance}" size="10" value="2500" /
input type="submit" /
/form
/body
/html

13.内联

!DOCTYPE html
html xmlns:th="http://www.thymeleaf.org"
head
title Thymeleaf tutorial: exercise 13 /title
link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" /
meta charset="utf-8" /
/head
body
h1 Thymeleaf tutorial - Solution for exercise 13: inlining /h1
h2 Birthday email /h2
form action="#" method="post"
label for="body" Message body: /label
textarea id="body" name="body" th:inline="text"
Dear [[${customerName}]],
it is our sincere pleasure to congratulate your in your birthday:
Happy birthday [[${customerName}]]!!!
See you soon, [[${customerName}]].
Regards,
The Thymeleaf team
/textarea
input type="submit" value="Send mail" /
/form
/body
/html

--------------------------------------------------------------------------------------------------------------

以上资料都来自http://itutorial.thymeleaf.org/。如果对Thymeleaf有兴趣,可以试试他们做的交互教程,很是好用。上面的html代码都是来自thymeleaf的交互教程


   



推荐阅读
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
author-avatar
手机用户2502882291
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有