最近在用老的开发方式+新技术写代码重新熟悉,遇到此问题,网上查阅了各种办法,都不见效果,后通过查阅(thymeleaf)官方API,自己摸索尝试,最终找到如下解决方案,代码经实打实测试,可呈现期望效果,分享出来供各位程序员伙伴们参考:
<select class="combox" name="userSex"><option th:selected="${{param.userSex}} eq ''" value="">所有性别</option><option th:selected="${{param.userSex}} eq '1'" value="1">男</option><option th:selected="${{param.userSex}} eq '0'" value="0">女</option></select>
代码段说明:
一、我的编码环境
代码工具:intellij IDEA .1
游览器:Google Chrome(谷歌)
前端:thymeleaf、Jquery、DWZ
后端框架:SpringBoot,SpringMVC,Mybatis,Maven
服务器:tomcat
JDK版本:JDK16
二、下拉框标签
<select><option></option></select>
html的下拉框标签写法,这个不多说;
三、下拉框选项内容
<option th:selected="${{param.userSex}} eq '1'" value="1">男</option>
th:属性名称:此为thymeleaf的th标签写法,此类标签都能按相关格式写条件判断表达式,不一定要使用th:if才能判断;
${{}}:thymeleaf表达式的写法,一般取值写成${}就行了,这里有写两层大括号,中间这一对大括号的意义为强制转换类型;
param:页面作用域对象,自带的,不用另外声明,直接使用即可;userSex为select(下拉框)的(name)属性值;param.userSex这样的写法可以取到select(下拉框)当前选中的值;param.userSex可换成从后台传递过来的对象或者属性取值(我这里写的是页面取值的方式);
eq:此为thymeleaf代替特殊符号的关键字,因此代码中不支持直接使用“==”符号,此处用eq关键字来代替,其功效就相当于“==”符号;
四、为什么要使用强制转换
经测试,如下代码无效,具体原因暂为探究;
<!-- 预设当下拉框选中的值为:'1' --><input type="text" th:value="${param.userSex} eq '1'"/><!-- 页面展示结果为:false --><input type="text" th:value="${param.userSex} eq 1"/><!-- 页面展示结果为:false --><input type="text" th:value="${param.userSex=='1'}"/><!-- 页面展示结果为:false --><input type="text" th:value="${param.userSex==1}"/><!-- 页面展示结果为:false --><!-- 试了很多写法....都没出效果,不一一列举了 -->