thymeleafth:href(一篇文章搞懂Thymeleaf) |
您所在的位置:网站首页 › td属性值 › thymeleafth:href(一篇文章搞懂Thymeleaf) |
本文目录一篇文章搞懂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 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |