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

时间:2014-11-06 16:32:01

标签: spring-mvc thymeleaf

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

item.codItemdefaultCodItem为长)

<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>

但结果是......

<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>

当我预料到这一点时:

<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>

那么,我应该如何在模板中将item.codItemdefaultCodItem进行比较,以正确设置selected属性?

1 个答案:

答案 0 :(得分:6)

根据Thymeleaf文件:

  

标准方言包括允许您通过评估条件来设置这些属性的属性,以便在评估时使用   如果为true,则该属性将设置为其固定值,如果计算为false,则不会设置该属性

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

th:selected="${item.codItem} eq ${defaultCodItem}"

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