Spring MVC : Java模板引擎 Thymeleaf (三)
以下以构造一个表单開始,解说 Thymeleaf的使用方法。
为了演示方便,还是以经典的注冊为例。
这是Thymeleaf的form的形式,
<form action="#" th:action="@{/register}" th:object="${person}" method="post">
</form>
action="#"是固定部分。由于action是由th:action指出。
@符号是Thymeleaf对URL表达的方式。
这是本文的第一个知识点。
- URL表达式
首先是绝对路径,
<a th:href="@{http://www.baidu.com}">
但最经常使用的肯定是相对路径。非常多朋友把上下文相对路径和server相对路径混为一谈,事实上它们是不同的。上下文相对路径都是以 / 开头的,比方是你的一个应用myapp部署在tomcat下。你能够用http://localhost:8080/myapp訪问它。这里的myapp就是上下文名称。
这时。
<a th:href="@{/login}">
解析后就是,
<a href="/myapp/login">
server相对路径和它差别是,server相对路径不会如果你的资源在应用上下文内。(你可能部署多个应用),也就是它同意你訪问在同一个server的其它上下文。比方,
<a th:href="@{~/other-app/hello.html}" >
解析后就是,
<a href="/other-app/showDetails.htm">
当然另一种相对路径(相对协议的),实际上是绝对路径,
<a th:href="@{<span style="font-family: Arial, Helvetica, sans-serif;">//code.jquery.com/jquery-1.10.2.js</span><span style="font-family: Arial, Helvetica, sans-serif;">}" ></span>
解析后就是,
<a href="//code.jquery.com/jquery-1.10.2.js">
接下来是URL的加入參数问题,
<a th:href="@{/order/details(id=3)}">
解析后。
<a href="/order/details?id=3">
多个參数能够在()内用逗号隔开。
以下的形式也是支持的,请细细体会,
<a th:href="@{/order/{id}/details(id=3,action='show_all')}">
解析后,
<a href="/order/3/details?action=show_all">
另一个概念,叫URL fragment,什么是URL Fragment呢?
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmxvdmVpdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
上面两张图基本说明了url fragment是什么了。
<a th:href="@{/home#all_info(action='show')}">
解析后,
<a href="/home? action=show#all_info">
下一个知识点是th:object,
- th:object
该属性在Thymeleaf非经常见。但form会强制要求你写这个。为了整合Spring。它对form里面的th:object规定例如以下:
- 必须是变量表达式(${...}),代表模型的名字,且不能向模型的属性导航,就是${a}合法。但${a.b}不合法
- form内不能有其它th:object。也就是HTML的表单不能嵌套
@RequestMapping(value = "/processForm", method=RequestMethod.POST)
public String processForm(@ModelAttribute(value="foo") Foo foo) {
...
}
html:
<form action="#" th:action="@{/processForm}" th:object="${foo}" method="post">
<input type="text" th:field="*{bar}" />
<input type="submit" />
</form>
Foo.java
public class Foo {
private String bar;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
}
看完之后,你肯定就能豁然开朗了。
- th:field
这个属性在Spring-mvc里非常重要,承担着绑定后台Bean属性的重任,这和JSP标签里的path非常像。
这个之后再说。
假设你使用springstandard。就是Spring表达式(SpEL)。
<span th:text="${book.author.name}">
选择表达式*{...}非常像变量表达式,不同在于,它运行的是前面选择的对象。
<div th:object="${book}">
...
<span th:text="*{title}">...</span>
...
</div>
前面选择了book,接下来就依照它求值。
<table>
...
<th th:text="#{header.address.city}">...</th>
<th th:text="#{header.address.country}">...</th>
...
</table>
国际化资源通常是在.properties文件定义。
Spring MVC : Java模板引擎 Thymeleaf (三)的更多相关文章
- 转--Spring MVC : Java模板引擎 Thymeleaf (三)
原文:http://www.csdn.com/html/topnews201408/49/1349.htm 下面以构造一个表单开始,讲解 Thymeleaf的用法.为了演示方便,还是以经典的注册为例. ...
- 新一代Java模板引擎Thymeleaf
新一代Java模板引擎Thymeleaf-spring,thymeleaf,springboot,java 相关文章-天码营 https://www.tianmaying.com/tutorial/u ...
- springboot:Java模板引擎Thymeleaf介绍
Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎.类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用 ...
- SpringBoot系列:Spring Boot使用模板引擎Thymeleaf
一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...
- Spring MVC : Java模板引擎 Thymeleaf (二)
本文原计划直接介绍Thymeleaf的视图解析,但考虑到学习的方便,决定先构建一个spring-mvc. 以下的全部过程仅仅要一个记事本和JDK就够了. 第一步,使用maven构建一个web app. ...
- SpringBoot入门:新一代Java模板引擎Thymeleaf(理论)
Spring Boot 提供了spring-boot-starter-web来为Web开发予以支持,spring-boot-starter-web为我们提供了嵌入的Tomcat以及SpringMVC的 ...
- Spring Boot整合模板引擎thymeleaf
项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --> <dependency> <groupId>org.springframew ...
- SpringBoot入门:新一代Java模板引擎Thymeleaf(实践)
菜鸟教程:http://www.runoob.com/ http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js http://apps.b ...
- Spring Boot (四)模板引擎Thymeleaf集成
一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供XHTM ...
随机推荐
- JavaScript加密解密7种方法
注:本文纯转贴,供学习使用 本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易 ...
- http --- 从输入URL到页面加载的过程发生了什么?
可以分为这几个大的过程: DNS解析 TCP连接 客户端发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 结束 其中(1)DNS解析可以理解为主寻找这个IP地址的过程,其中如果找 ...
- Leaflet学习笔记(一)
一.简介 Leaflet是一个主要适用于移动端交互地图的领先的开源javascript库.虽然js库只有38KB左右,但是却能满足大部分开发者的所有功能需求. Leaflet拥有着简单,高效和实用的设 ...
- Nginx下部署TP5项目
标签(空格分隔): linux nginx配置文件: server { listen 81; #listen [::]:80; server_name _; index index.html inde ...
- sql查询每个学生的最高成绩mysql语句
张三 语文 100 张三 数学 83 李四 语文 88 李四 数学 100 查询每个学生的最高成绩. select b.* from (select name,max(score) score fro ...
- IIS 7.5 配置
安装 MVC 3 对应版本. 或者对应的版本. 登陆时候报错 检查下面几项是否配置正确 检查ASP.net 是否开启. 检查网站的应用池是否配置正确 在处理程序映射当中检查这几项是否配置正确 如果都配 ...
- App开发Native.js入门指南
概述 Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术.如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展 ...
- gcd(最大公约数)lcm(最小公倍数)E - Wolf and Rabbit
1.gcd 递归实现 int gcd(int i,int j){ if(j==0) return i; else return gcd(j,i%j);} 2.lcm int gcd(int i,int ...
- Javascript中正则的 match、test、exec使用方法和区别
总结: match 是str调用 test和exec是正则表达式调用 test只返回true或false, exec和match的结果是相同的,返回结果比较复杂
- cal---显示日历
cal命令用于显示当前日历,或者指定日期的日历. 语法 cal(选项)(参数) 选项 -l:显示单月输出: -3:显示临近三个月的日历: -s:将星期日作为月的第一天: -m:将星期一作为月的第一天: ...