【问题标题】:How to select the value of a combo box in the controller in Spring MVC with Thymeleaf?如何使用 Thymeleaf 在 Spring MVC 的控制器中选择组合框的值?
【发布时间】:2020-12-19 18:57:32
【问题描述】:

我有以下视图代码。

<input type="text" name="person" th:value="${person}">

<select name="gender" id="gender" th:value="${gender}">
    <option value="Male">Male</option>
    <option value="Female">Female</option>   
</select>

控制器

modelAndView.addObject("person", "Nancy");
modelAndView.addObject("gender", "Female");

运行时,人员字段正确显示“Nancy”。 但是组合框显示男性而不是女性。 如何让它显示正确的值?

【问题讨论】:

    标签: java spring spring-mvc thymeleaf


    【解决方案1】:

    需要使用Thymeleaf来处理每个选项的selected属性,保证初始显示正确:

    <select name="gender" id="gender" th:value="${gender}">
        <option value="Male" th:selected="${gender} == 'Male'">Male</option>
        <option value="Female" th:selected="${gender} == 'Female'">Female</option>   
    </select>
    

    这会生成以下 HTML:

    <select name="gender" id="gender" value="Female">
        <option value="Male">Male</option>
        <option value="Female" selected="selected">Female</option>   
    </select>
    

    selected 属性是一个 HTML 布尔属性 - 这些的 Thymeleaf 文档是 here

    【讨论】:

    • 完美。有效。谢谢你。回答接受。就一个问题。 selected="selected" 是什么意思?我只是知道自己选择了。喜欢&lt;option value="Female" selected&gt;Female&lt;/option&gt;
    • 谢谢。您对 selected (以及 HTML 中的所有其他布尔值)是绝对正确的。正如this question 中所述,这是 XHTML 文档(必须使用 selected="selected")和 HTML5 文档(您可以选择仅使用 selected - 但其他表示法也有效)之间的区别。
    • 话虽如此,Thymeleaf 似乎总是使用 XHTML 样式:"如果评估为 true,则该属性将设置为其固定值,如果评估为 false,则该属性不会设置”,其中“设置为其固定值”表示foo="foo"
    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2017-01-28
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多