第一个问题:下拉菜单文字未显示完整;
先来看源码:
<li>
<p>分类名称:</p>
<select name="className" class="form-control m-b" th:with="type=${@dict.getType('sys_zyjn_class')}">
<option value="" th:selected="true">全部分类</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
效果图如下:
解决方案,把发select下拉菜单中的class样式去掉即可恢复正常,去掉后的select源码为:
<select name="className" th:with="type=${@dict.getType('sys_zyjn_class')}">
效果:
此外,在thymeleaf下拉菜单中有2个问题需要注意:
第二个问题:option中选项如果为字典值,是不带“全部分类”的这个值的,那么就会出现页面初步加载出来的是字典第一个值的数据,而不是全部数据,如果我们希望页面初步加载出来的就是全部数据怎么办?此时需要我们手动添加一个全部分类的option选项,详细写法参照第一段代码;
第三个问题:关于value,如果value有具体的数值,此时用th:value是没有问题的,如果像全部分类里边是空值:此时用th:value=""就会报错的了,具体错误如下:
怎么解决呢,就是把th:value=""中的th:去掉,概括如下:
value里边是具体的数值,表达式为
th:value="${dict.dictValue}"
如果value的值为空,表达式为
value=""