thymeleafth:href(一篇文章搞懂Thymeleaf)

您所在的位置:网站首页 td属性值 thymeleafth:href(一篇文章搞懂Thymeleaf)

thymeleafth:href(一篇文章搞懂Thymeleaf)

2023-03-22 14:20| 来源: 网络整理| 查看: 265

本文目录一篇文章搞懂Thymeleaf关于thymeleaf中URL的路径问题thymeleaf 怎样引用cssthymeleaf的锚点连接里面怎么传参数thymeleaf怎么返回字符串给页面thymeleaf 能执行java代码吗thymeleaf前端表达式怎么写thymeleaf if怎么好用springboot thymeleaf返回的都是字符串不是页面Thymeleaf的标签和表达式一篇文章搞懂Thymeleaf

在控制器中往页面传递几个变量:

在页面中使用变量表达式${}来获取它们:

可以看到变量表达式不但可以获取变量的属性值,甚至还可以访问变量的方法(getName()和upcaseNa

也可以一次性定义多个变量:

th:with属性允许重用在同一个属性中定义的变量:

参考: https://mrbird.cc/Thymeleaf-%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F.html

关于thymeleaf中URL的路径问题

建议使用绝对路劲。绝对路径是以/开头就可以了《link th:href=“@{/static/css/bootstrap.min.css}“ rel=“stylesheet“》

thymeleaf 怎样引用css

引用css其实大可不必非要用thymeleaf ,像平常一样引用就可以以,只要路径写对了但如果你非要用thymeleaf 的话,可以参考《link rel=“stylesheet“ type=“text/css“ th:href=“@{${mapJson.res.url}}“/》

thymeleaf的锚点连接里面怎么传参数

《!-- href里面用后台传值加字符拼接,或者直接是th:href=“@{#index_id}“ --》《a th:href=“@{’#’+${index_id_name}}“ 》123《/a》《!-- 要跳转的div --》《div class=““ style=“height: 500px;background-color: #0088CC;“》 《div id=“index_id“》 234 《/div》《/div》《!-- index_id_name的值为index_id --》

thymeleaf怎么返回字符串给页面

在模板处理前,thymeleaf还会增加一个变量execInfo,比如${execInfo.templateName},${execInfo.now}等。数据访问模式:${...},变量引用模式,比如${myBean.property},如果用springDialect,则使用的是spring EL,如果不用spring,则用的ognl。*{...},选择表达式,一般是th:object之后,直接取object中的属性。当没有选取对象时,其功能等同${...},*{firstName}也等同于${#object.firstName},#object代表当前选择的对象。@{...}链接url的表达式。th:href=“@{/xxx/aa.do(id=${o.id})“,会自动进行url-encoding的处理。@{...}内部可以是需要计算的表达式,比如:th:href=”@{’/details/’+${user.login}(orderId=${o.id})}“#{...},i18n,国际化。需要注意的:#{${welcomeMsgKey}(${session.user.name})}:i18n message支持占位。各个表达式支持嵌套。表达式基本对象:#ctx:context object#root或者#vars#locale##httpSession

thymeleaf 能执行java代码吗

简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极吸引人的特点:

1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。

2.Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。

3.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性器、国际化等功能。

标准表达式语法

它们分为四类:

1.变量表达式

2.选择或星号表达式

3.文字国际化表达式

4.URL表达式

变量表达式

变量表达式即OGNL表达式或Spring EL表达式(在Spring术语中也叫model attributes)。如下所示:${session.user.name}

它们将以HTML标签的一个属性来表示:

《span th:text=“${book.author.name}“》  《li th:each=“book : ${books}“》  

选择(星号)表达式

选择表达式很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行,如下:*{customer.name}

被指定的object由th:object属性定义:

《div th:object=“${book}“》  

...  

《span th:text=“*{title}“》...《/span》  

...  

《/div》  

文字国际化表达式

文字国际化表达式允许我们从一个外部文件获取区域文字信息(.properties),用Key索引Value,还可以提供一组参数(可选).

#{main.title}  

#{message.entrycreated(${entryId})}  

可以在模板文件中找到这样的表达式代码:

《table》  

...  

《th th:text=“#{header.address.city}“》...《/th》  

《th th:text=“#{header.address.country}“》...《/th》  

...  

《/table》  

URL表达式

URL表达式指的是把一个有用的上下文或回话信息添加到URL,这个过程经常被叫做URL重写。@{/order/list}URL还可以设置参数:@{/order/details(id=${orderId})}相对路径:@{../documents/report}

让我们看这些表达式:

《form th:action=“@{/createOrder}“》  

《a href=“main.html“ th:href=“@{/main}“》

变量表达式和星号表达有什么区别吗?

如果不考虑上下文的情况下,两者没有区别;星号语法评估在选定对象上表达,而不是整个上下文什么是选定对象?就是父标签的值,如下:

《div th:object=“${session.user}“》

《p》Name: 《span th:text=“*{firstName}“》Sebastian《/span》.《/p》

《p》Surname: 《span th:text=“*{lastName}“》Pepper《/span》.《/p》

《p》Nationality: 《span th:text=“*{nationality}“》Saturn《/span》.《/p》

《/div》

这是完全等价于:

《div th:object=“${session.user}“》

《p》Name: 《span th:text=“${session.user.firstName}“》Sebastian《/span》.《/p》

《p》Surname: 《span th:text=“${session.user.lastName}“》Pepper《/span》.《/p》

《p》Nationality: 《span th:text=“${session.user.nationality}“》Saturn《/span》.《/p》

《/div》

当然,美元符号和星号语法可以混合使用:

《div th:object=“${session.user}“》

《p》Name: 《span th:text=“*{firstName}“》Sebastian《/span》.《/p》

《p》Surname: 《span th:text=“${session.user.lastName}“》Pepper《/span》.《/p》

《p》Nationality: 《span th:text=“*{nationality}“》Saturn《/span》.《/p》

《/div》

表达式支持的语法

字面(Literals)

文本文字(Text literals): ’one text’, ’Another one!’,…

数字文本(Number literals): 0, 34, 3.0, 12.3,…

布尔文本(Boolean literals): true, false

空(Null literal): null

文字标记(Literal tokens): one, sometext, main,…

文本操作(Text operations)

字符串连接(String concatenation): +

文本替换(Literal substitutions): |The name is ${name}|

算术运算(Arithmetic operations)

二元运算符(Binary operators): +, -, *, /, %

减号(单目运算符)Minus sign (unary operator): -

布尔操作(Boolean operations)

二元运算符(Binary operators):and, or

布尔否定(一元运算符)Boolean negation (unary operator):!, not

比较和等价(Comparisons and equality)

比较(Comparators): 》, 《, 》=, 《= (gt, lt, ge, le)

等值运算符(Equality operators):==, != (eq, ne)

条件运算符(Conditional operators)

If-then: (if) ? (then)

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

Default: (value) ?: (defaultvalue)

所有这些特征可以被组合并嵌套:

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

thymeleaf前端表达式怎么写

Thymeleaf 基本表达式

如需了解thymeleaf以及thymeleaf整合spring,请参考《Thymeleaf模板引擎使用》、《Thymeleaf 集成spring》

${}

变量表达式(美元表达式,哈哈),用于访问容器上下文环境中的变量,功能同jstl中${}。

例如:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {...//Create Servlet contextWebContext ctx = new WebContext(req, resp, this.getServletContext(), req.getLocale());ctx.setVariable(“helloword“,“hello thymeleaf,wellcome!“);//Executing template enginetemplateEngine.process(“home“, ctx, resp.getWriter());}

模板页面访问变量

《p》《span th:text=“${helloword}“》《/span》《/p》

回到顶部

*{}

选择表达式(星号表达式)。选择表达式与变量表达式有一个重要的区别:选择表达式计算的是选定的对象,而不是整个环境变量映射。也就是:只要是没有选择的对象,选择表达式与变量表达式的语法是完全一样的。那什么是选择的对象呢?是一个:th:object对象属性绑定的对象。

例如:

《div th: obj ect=“ ${session. user}“ 》《p》Name: 《span th: text=“ *{firstName}“ 》Sebastian《/span》. 《/p》《p》Surname: 《span th: text=“ *{lastName}“ 》Pepper《/span》. 《/p》《p》Nationality: 《span th: text=“ *{nationality}“ 》Saturn《/span》. 《/p》《/div》

上例中,选择表达式选择的是th:object对象属性绑定的session. user对象中的属性。

回到顶部

#{}

消息表达式(井号表达式,资源表达式)。通常与th:text属性一起使用,指明声明了th:text的标签的文本是#{}中的key所对应的value,而标签内的文本将不会显示。

例如:

新建/WEB-INF/templates/home.html,段落

《p th: text=“ #{home. welcome}“ 》This text will not be show! 《/p》

新建/WEB-INF/templates/home.properties,home.welcome:

home.welcome=this messages is from home.properties!

测试结果:

从测试结果可以看出,消息表达式通常用于显示页面静态文本,将静态文本维护在properties文件中也方面维护,做国际化等。

回到顶部

@{}

超链接url表达式。

例如:

《script th:src=“@{/resources/js/jquery/jquery.json-2.4.min.js}“

回到顶部

#maps

工具对象表达式。常用于日期、集合、数组对象的访问。这些工具对象就像是java对象,可以访问对应java对象的方法来进行各种操作。

例如:

《div th:if=“${#maps.size(stuReqBean.students.score) != 0}“》《label》${score.key}:《/label》《input type=“text“ th:value=“${score.value}“》《/input》《/div》《div th:if=“${#maps.isEmpty(stuReqBean.students.score)}“》...do something...《/div》

其他工具对象表达式还有:

#dates#calendars#numbers#strings#objects#bools#arrays#lists#setsthymeleaf if怎么好用

简单的条件:“if”和“unless”th:if用法实例:《table》《tr》《th》NAME《/th》《th》PRICE《/th》《th》IN STOCK《/th》《th》COMMENTS《/th》《/tr》《tr th:each=“prod : ${prods}“ th:class=“${prodStat.odd}? ’odd’“》《td th:text=“${prod.name}“》Onions《/td》《td th:text=“${prod.price}“》2.41《/td》《td th:text=“${prod.inStock}? #{true} : #{false}“》yes《/td》《td》《span th:text=“${#lists.size(prod.comments)}“》2《/span》 comment/s《a href=“comments.html“th:href=“@{/product/comments(prodId=${prod.id})}“th:if=“${not #lists.isEmpty(prod.comments)}“》view《/a》《/td》《/tr》《/table》如果值不是空:   1.如果一个布尔值,是true。  2.如果值是一个数字,非零 non-zero 3.如果是一个字符,非零值 non-zero 4.如果值是一个字符串,而不是“false”,“off” or “no”  5.如果值不是布尔,一个数字,一个字符或字符串。  (如果值是null,th:if将评估为false)。th:unless用法:《a href=“comments.html“th:href=“@{/comments(prodId=${prod.id})}“th:unless=“${#lists.isEmpty(prod.comments)}“》view《/a》二.switch用法:(th:switch / th:case)《div th:switch=“${user.role}“》《p th:case=“’admin’“》User is an administrator《/p》《p th:case=“#{roles.manager}“》User is a manager《/p》《/div》被指定为默认选项用th:case=“*“;相当于default,例如:《div th:switch=“${user.role}“》《p th:case=“’admin’“》User is an administrator《/p》《p th:case=“#{roles.manager}“》User is a manager《/p》《p th:case=“*“》User is some other thing《/p》《/div》

springboot thymeleaf返回的都是字符串不是页面

那是一定的。@RestController=@Controller+@ResponseBody,函数返回值会被当成responsebody来处理,因此如果需要返回页面,需要使用@Controller。

Thymeleaf的标签和表达式

  1.1   th:id    

         替换id标签

  1.2    th:text   

          文本替换,包括html标签

  1.3 th:utext   

        文本替换,html标签会显示出正确的样式

   1.4 th:object 

   替换对象, 用于表单数据对象绑定,将表单绑定到后台controller的一个JavaBean参数。常与th:field一起使用进行表单数据绑定。

1.5  th:value

属性赋值

1.6 th:with

定义局部变量。

当th:with被处理,firstPer变量创建一个局部变量和变量添加到map自上下文, 以便它是用于评估和其他上下文中声明的变量从开始,但只有包含《 div 》标记的范围内。

定义多个局部变量

1.7 th:style

设置样式

1.8 th:onclick

点击事件

1.9 th:each

属性赋值

1.10 th:if

 判断条件

1.11 th:unless

和th:if判断相反

1.12 th:href

链接地址

1.13 th:switch

多路选择配合th:case使用

1.14 th:fragment

自定义片段,定义fragment,所有的fragment可以写在一个文件里面,也可以单独存在

   1.15  th:insert

   保留自己的主标签,保留th:fragment的主标签。

  1.16  th:replace

  不要自己的主标签,保留th:fragment的主标签。

    1.17 th:include

    保留自己的主标签,不要th:fragment的主标签。(官方3.0后不推荐)     结果为:

1.18 th:selectd

selected选择框选中

1.19 th:src

图片类地址引入

1.20 th:inline

定义js脚本可以使用变量

1.21 th:action

表单提交的地址

1.22 th:remove

删除某个属性

1.all:删除包含标签和所有的孩子。

2.body:不包含标记删除,但删除其所有的孩子。

3.tag:包含标记的删除,但不删除它的孩子。

4.all-but-first:删除所有包含标签的孩子,除了第一个。

5.none:什么也不做。这个值是有用的动态评估。

1.23 th:attr

 设置标签属性,多个属性可以用逗号分隔

$ {...}    变量表达式,可用于获取后台传过来的值

 * {...} 选择变量表达式  

 #{...} 消息表达式  

 @ {...} 链接⽹址表达式,用于替换网页中的 src、href 等的值

〜{...} ⽚段表达式,可以用于引用公共的目标片段

@{...} 处理 url 地址

     Thymelea



【本文地址】


今日新闻

属性
  • 属性td攻略
  • td name属性
  • tr属性值

  • 推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3