如何将模型的两个变量与Thymeleaf标准表达式语法进行比较?

Leo*_*ade 2 spring-mvc thymeleaf

我正在尝试selected使用thymeleaf + springMVC 设置选项的属性,如下所示:

(item.codItem并且defaultCodItem很长)

<select id="selItems">
<th:block th:each="item : ${myItems}">
    <option value="564" th:value="${item.codItem}" th:selected="(${item.codItem} eq ${defaultCodItem})? 'selected' : '' "
        th:text="${item.codItem} + ' || ' + ${defaultCodItem}">  564 || ?
    </option>
</th:block>
</select>
Run Code Online (Sandbox Code Playgroud)

但结果是......

<select id="selItems">
    <option selected="selected" value="455">11/2014 - 455 || 450</option>
    <option selected="selected" value="450">450 || 450</option>
    <option selected="selected" value="452">452 || 450</option>
    <option selected="selected" value="457">457 || 450</option>
    <option selected="selected" value="453">453 || 450</option>
    <option selected="selected" value="454">454 || 450</option>
    <option selected="selected" value="451">451 || 450</option>
</select>
Run Code Online (Sandbox Code Playgroud)

当我预料到这一点:

<select id="selItems">
    <option selected="" value="455">11/2014 - 455 || 450</option>
    <option selected="selected" value="450">450 || 450</option>
    <option selected="" value="452">452 || 450</option>
    <option selected="" value="457">457 || 450</option>
    <option selected="" value="453">453 || 450</option>
    <option selected="" value="454">454 || 450</option>
    <option selected="" value="451">451 || 450</option>
</select>
Run Code Online (Sandbox Code Playgroud)

那么,应该怎么比较item.codItem与defaultCodItem在模板中设置selected正确的属性?

gri*_*rid 6

根据Thymeleaf文件:

标准方言包含允许您通过评估条件来设置这些属性的属性,因此如果计算为true,则属性将设置为其固定值,如果计算为false,则不会设置该属性

选中是其中之一.我认为你应该把条件写成:

th:selected="${item.codItem} eq ${defaultCodItem}"
Run Code Online (Sandbox Code Playgroud)

我猜你的当前行不能按预期工作,因为非空值被评估为true(例如空字符串)