jquer each 遍历的结果不显示 null_SpringBoot系列(三十一)- Thymeleaf如何用th:each 做条件遍历

步骤1:基于前面的知识点步骤2:先运行,看到效果,再学习步骤3:模仿和排错步骤4:TestController步骤5:普通遍历步骤6:带状态的遍历步骤7:结合 select步骤8:结合 单选框步骤9:完整的 test.html步骤10:重启测试

步骤 1 : 基于前面的知识点
本知识点是建立在上一个知识点可运行项目的基础上进行的改进,所以最好把上个知识点理解和消化了.步骤 2 : 先运行,看到效果,再学习
老规矩,先下载下载区(点击进入)的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
运行Application.java 然后访问如下测试地址:http://127.0.0.1:8080/thymeleaf/test
可以看到如图所示的集中常见遍历需求
1. 单纯表格
2. 取status值的表格
3. 下拉框
4. 单选框

v2-e306c52faecdb736cfd72efd6fa6f7cb_b.jpg

步骤 3 : 模仿和排错
在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。
推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程步骤 4 : TestController
准备集合 List<Product> 用于视图上显示。
需要注意的是 第5个产品用的是 currentProductpackage com.how2java.springboot.web;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import com.how2java.springboot.pojo.Product;@Controllerpublic class TestController {@RequestMapping("/test")public String test(Model m) {String htmlContent = "<p style='color:red'> 红色文字</p>";Product currentProduct =new Product(5,"product e", 200);boolean testBoolean = true;List<Product> ps = new ArrayList<>();ps.add(new Product(1,"product a", 50));ps.add(new Product(2,"product b", 100));ps.add(new Product(3,"product c", 150));ps.add(new Product(4,"product d", 200));ps.add(currentProduct);ps.add(new Product(6,"product f", 200));ps.add(new Product(7,"product g", 200)); m.addAttribute("ps", ps);m.addAttribute("htmlContent", htmlContent);m.addAttribute("currentProduct", currentProduct);m.addAttribute("testBoolean", testBoolean);return "test";}}步骤 5 : 普通遍历
使用 th:each 遍历

v2-ef3258d8932239187171db82a973f0f6_b.jpg

<div class="showing"><h2>遍历</h2><table><thead><tr><th>id</th><th>产品名称</th><th>价格</th></tr></thead><tbody><tr th:each="p: ${ps}"><td th:text="${p.id}"></td><td th:text="${p.name}"></td><td th:text="${p.price}"></td></tr></tbody></table></div>步骤 6 : 带状态的遍历
使用 th:each="p,status: ${ps} 方式遍历就把状态放在 status里面了, 同时还用3元表达式判断奇偶 th:class="${status.even}?'even':'odd'"
status里还包含了如下信息:
index 属性, 0 开始的索引值
count 属性, 1 开始的索引值
size 属性, 集合内元素的总量
current 属性, 当前的迭代对象
even/odd 属性, boolean 类型的, 用来判断是否是偶数个还是奇数个
first 属性, boolean 类型, 是否是第一个
last 属性, boolean 类型, 是否是最后一个

v2-72d822098ce79a93926d6502a9d66f9c_b.jpg

<div class="showing"><h2>带状态遍历</h2><table><thead><tr><th>index</th><th>id</th><th>产品名称</th><th>价格</th></tr></thead><tbody><tr th:class="${status.even}?'even':'odd'" th:each="p,status: ${ps}"><td th:text="${status.index}"></td><td th:text="${p.id}"></td><td th:text="${p.name}"></td><td th:text="${p.price}"></td></tr></tbody></table></div>步骤 7 : 结合 select
还是用 th:each,但是放在option元素上,就可以遍历出多个下拉框出来了。
其中 th:selected 表示被选中的项。

v2-c4430c35244ee6061d9b0f44a745b8ae_b.jpg

<div class="showing"><h2>遍历 select </h2><select size="3"><option th:each="p:${ps}" th:value="${p.id}" th:selected="${p.id==currentProduct.id}" th:text="${p.name}" ></option></select></div>步骤 8 : 结合 单选框
单选框也是同样的做法,其中 th:checked用于判断是否选中

v2-cc70eab99de717b8acddf417588c4150_b.png

<div class="showing"><h2>遍历 radio </h2><input name="product" type="radio" th:each="p:${ps}" th:value="${p.id}" th:checked="${p.id==currentProduct.id}" th:text="${p.name}" /></div>步骤 9 : 完整的 test.html
完整的 test.html<!DOCTYPE HTML><html xmlns:th="http://www.thymeleaf.org"><head><title>hello</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" media="all" href="../../webapp/static/css/style.css"th:href="@{/static/css/style.css}"/><script type="text/javascript" src="../../webapp/static/js/thymeleaf.js"th:src="@{/static/js/thymeleaf.js}"></script><style>h2{text-decoration: underline;font-size:0.9em;color:gray;}</style> </head><body><div class="showing"><h2>遍历</h2><table><thead><tr><th>id</th><th>产品名称</th><th>价格</th></tr></thead><tbody><tr th:each="p: ${ps}"><td th:text="${p.id}"></td><td th:text="${p.name}"></td><td th:text="${p.price}"></td></tr></tbody></table></div><div class="showing"><h2>带状态遍历</h2><table><thead><tr><th>index</th><th>id</th><th>产品名称</th><th>价格</th></tr></thead><tbody><tr th:class="${status.even}?'even':'odd'" th:each="p,status: ${ps}"><td th:text="${status.index}"></td><td th:text="${p.id}"></td><td th:text="${p.name}"></td><td th:text="${p.price}"></td></tr></tbody></table></div><div class="showing"><h2>遍历 select </h2><select size="3"><option th:each="p:${ps}" th:value="${p.id}" th:selected="${p.id==currentProduct.id}" th:text="${p.name}" ></option></select></div><div class="showing"><h2>遍历 radio </h2><input name="product" type="radio" th:each="p:${ps}" th:value="${p.id}" th:checked="${p.id==currentProduct.id}" th:text="${p.name}" /></div><div class="showing"><h2>条件判断</h2><p th:if="${testBoolean}" >如果testBoolean 是 true ,本句话就会显示</p><p th:if="${not testBoolean}" >取反 ,所以如果testBoolean 是 true ,本句话就不会显示</p><p th:unless="${testBoolean}" >unless 等同于上一句,所以如果testBoolean 是 true ,本句话就不会显示</p><p th:text="${testBoolean}?'当testBoolean为真的时候,显示本句话,这是用三相表达式做的':''" ></p></div><div class="showing"><h2>显示 转义和非转义的 html 文本</h2><p th:text="${htmlContent}" ></p><p th:utext="${htmlContent}" ></p></div><div class="showing"><h2>显示对象以及对象属性</h2><p th:text="${currentProduct}" ></p><p th:text="${currentProduct.name}" ></p><p th:text="${currentProduct.getName()}" ></p></div><div class="showing" th:object="${currentProduct}"><h2>*{}方式显示属性</h2><p th:text="*{name}" ></p></div><div class="showing"><h2>算数运算</h2><p th:text="${currentProduct.price+999}" ></p></div><div class="showing"><div th:replace="include::footer1" ></div><div th:replace="include::footer2(2015,2018)" ></div></div></body></html>步骤 10 : 重启测试
重新运行 Application.java, 然后测试http://127.0.0.1:8080/thymeleaf/test
更多内容,点击了解: https://how2j.cn/k/springboot/springboot-interation/1740.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 属性描述符_Python属性描述符(二)

Python存取属性的方式特别不对等&#xff0c;通过实例读取属性时&#xff0c;通常返回的是实例中定义的属性&#xff0c;但如果实例未曾定义过该属性&#xff0c;就会获取类属性&#xff0c;而为实例的属性赋值时&#xff0c;通常会在实例中创建属性&#xff0c;而不会影响到类…

python3.6sysos_求大佬,这是什么情况啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Traceback (most recent call last): File "manager.py", line 13, in sys.exit(main()) File "manager.py", line 8, in main manager.run() File "/root/imooc/lib/python3.5/site-packages/flask_sc…

6个座位办公室最佳位置_四人办公室座次的首选最佳座位在哪儿

四人办公室虽然不再拥挤&#xff0c;但座次依然有好坏之分&#xff0c;首选最佳的座位应靠着窗户并不与门相对。选择一个好的座位&#xff0c;不仅有助于我们工作效率和工作质量的提高&#xff0c;还能帮助我们的事业运和财运得到提升。在大多数人较多的办公室里&#xff0c;并…

.Net学习笔记----2015-06-30(超市收银系统01-仓库类)

GUID&#xff1a; 产生一个不会重复的ID static void Main(string[] args){//产生一个不会重复的编号Console.WriteLine(Guid.NewGuid().ToString());Console.WriteLine(Guid.NewGuid().ToString());Console.WriteLine(Guid.NewGuid().ToString());Console.WriteLine(Guid.NewG…

python xml etree_python xml.etree解析xml

config.xml <?xml version"1.0" encoding"UTF-8"?>linux 30windows 201 &#xff0c;解析出xml文件的根元素 from xml.etree import ElementTree as ET treeET.parse(config.xml) roottree.getroot() 或者 &#xff08;从字符串中解析&#xff09;…

http协议报文体_HTTP协议扫盲(七)请求报文之 GET、POST-FORM 和 POST-FILE

ORACLE临时表空间总结临时表空间概念 临时表空间用来管理数据库排序操作以及用于存储临时表.中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入 ...web自学网站coursera 网站很多新的技术,都是大牛和牛大学的,和外国新…

Winform开发之ADO.NET对象Connection、Command、DataReader、DataAdapter、DataSet和DataTable简介...

ADO.NET技术主要包括Connection、Command、DataReader、DataAdapter、DataSet和DataTable等6个对象&#xff0c;下面对这6个对象进行简单的介绍&#xff1a;&#xff08;1&#xff09;Connection对象的主要功能是与数据库进行连接&#xff08;事物处理也使用此对象&#xff09;…

python电子英汉词典显示_python网页抓取之英汉字典

linux的字典本人实在用起来不舒服&#xff08;stardict挺不错的&#xff0c;但是界面好看些&#xff0c;功能简单易用就好了&#xff09; &#xff0c;在线翻译又得打开庞大的浏览器....就打算自己写个&#xff0c;但是时间有限&#xff0c;为了简单&#xff0c; 还是用python抓…

清空缓存的命令_超详细的mysql数据库查询缓存原理解析、涉及命令、流程分析等...

概述mysql查询缓存在数据库优化可以起到很大的作用&#xff0c;今天主要针对这一块做一个总结&#xff0c;下面一起来看看吧~一、缓存条件&#xff0c;原理MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集&#xff0c;MySql在实现Query Cache的具体技术细…

python与tensorflow的关系_python – 在TensorFlow,Session.run()和Tensor.eval()之间有什么区别?...

如果你有Tensor t&#xff0c;调用 t.eval()相当于调用tf.get_default_session()。run(t)。 您可以将会话设置为默认值&#xff0c;如下所示&#xff1a; t tf.constant(42.0) sess tf.Session() with sess.as_default(): # or with sess: to close on exit assert sess is t…

和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!

最近沉迷lua脚本热更&#xff0c;想说这个可以提高多少菜鸡的调试效率&#xff0c;找了网上好多文章&#xff0c;但是都不行&#xff0c;尝试了很久&#xff0c;并且自己测试和学习&#xff0c;写了一遍&#xff0c;勉强能热更了。下面记录一下热更Lua的过程。一、用来卸载表格…

nodejs cluster ip hash_redis集群架构了解一下?一致性hash了解吗?

在前几年&#xff0c;redis 如果要搞几个节点&#xff0c;每个节点存储一部分的数据&#xff0c;得借助一些中间件来实现&#xff0c;比如说有 codis&#xff0c;或者 twemproxy&#xff0c;都有。有一些 redis 中间件&#xff0c;你读写 redis 中间件&#xff0c;redis 中间件…

硬盘主分区和拓展分区

主分区,也称为主磁盘分区,和扩展分区、逻辑分区一样,是一种分区类型。主分区中不能再划分其他类型的分区,因此每个主分区都相当于一个逻辑磁盘(在这一点上主分区和逻辑分区很相似,但主分区是直接在硬盘上划分的,逻辑分区则必须建立于扩展分区中)。 1. 一个硬盘可以有1到3个主分…

python如何比较大小_python列表如何比较大小

python列表如何比较大小 发布时间:2020-09-22 13:58:58 来源:亿速云 阅读:59 作者:小新 这篇文章给大家分享的是有关python列表如何比较大小的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 Python中可以使用cmp()函数比较两个列表的大小。 c…

python 连接oracle_常用的Python库,给大家分享一下!

Tkinter———— Python默认的图形界面接口。Tkinter是一个和Tk接口的Python模块&#xff0c;Tkinter库提供了对Tk API的接口&#xff0c;它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言&#xff0c;用于简化shell下复…

js 获取某年的某天是第几周

/**2 * 判断年份是否为润年3 *4 * param {Number} year5 */6 function isLeapYear(year) {7 return (year % 400 0) || (year % 4 0 && year % 100 ! 0);8 }9 /**10 * 获取某一年份的某一月份的天数11 *12 * param {Number} year13 * param {Number} month14 *…

python 前端学习_python学习之路7 前端学习3

1.页面布局PosTion :fixedTitle.left{float:left;}.right{float:right;}.head{height:58px;background-color:#3c3c3c;}.head .fontsquarl{width:120px;height:58px;background-color:#F22E00;line-height:58px;}.head .logosuqarl{width:120px;height:58px;background-color:#…

2.5d generator 2.0_ps插件【2.5D插件】

近一两年来创意插画在视觉上的使用越来越多&#xff0c;设计师们都愈加倾向于使用漂亮的插画和产品结合让自己的设计脱颖而出。在最近这段时间新涌现的设计作品当中&#xff0c;强烈的视觉冲击力和产品结合的展现是它们共通的特点。那么2.5D插画也是作为近一两年的发展趋势&…

(转)女生应该找一个玩ACM的男生

1、强烈的事业心 将来&#xff0c;他也一定会有自己热爱的事业。而且&#xff0c;男人最性感的时刻之一&#xff0c;就是他专心致志做事的时候。所以&#xff0c;找一个机会在他全神贯注玩ACM的时候&#xff0c;从侧面好好观察他&#xff0c;你就会发现我说的话没错。 2、永不放…

人工神经网络_制作属于自己的人工神经网络

在本文中&#xff0c;我已经实现了具有Dropout和L2正则化的人工神经网络的完全向量化代码。在本文中&#xff0c;我实现了一个在多个数据集上测试的人工神经网络的完全向量化python代码。此外&#xff0c;并对Dropout和L2正则化技术进行了实现和详细说明。强烈建议通过人工神经…