Thymeleaf下拉菜单中的默认值

时间:2015-08-25 17:56:09

标签: html html5 spring spring-mvc thymeleaf

我正在使用Spring MVC和thymeleaf构建一个Web应用程序。我的下拉菜单是这样的,它按预期工作:

<form style="display: inline-block" th:action="@{/search}"
                th:object="${searchForm}" th:method="post">
                <select th:field="*{selectedOption}">
                    <option th:each="option : ${searchOptions}"
                        th:value="${option.getOption()}"
                        th:text="${option.getOptionName()}">Options</option>
                </select> <input type="text" th:field="*{criteria}" name="searchTextBox"
                    class="topcoat-text-input--large" /> <input type="submit"
                    style="display: inline-block" class="topcoat-button--large--cta"
                    value="Search" name="searchButton" />
            </form>

但是如何为下拉菜单设置预先选择/默认值?

由于

编辑1:

我尝试添加:th:selected="${searchCriteria.getSelectedOption()}"以使其成为:

<select th:field="*{selectedOption}">
                        <option th:each="option : ${searchOptions}"
                            th:value="${option.getOption()}"
                            th:text="${option.getOptionName()}"
                            th:selected="${searchCriteria.getSelectedOption()}">Options</option>
                    </select>

但是这仍然没有将默认值设置为所选内容。

2 个答案:

答案 0 :(得分:2)

我认为searchCriteria.getSelectedOption()没有返回布尔值,但必须这样做。

编辑:

<select th:field="*{selectedOption}">
    <option th:each="option : ${searchOptions}"
            th:value="${option.getOption()}"
            th:text="${option.getOptionName()}"
            th:selected="${searchCriteria.isSelected(option)}">
        Options
    </option>
</select>

在您的SearchCriteria课程中(我不知道它实际上是什么样子):

public boolean isSelected(Option option) {
    return option.equals(selectedOption);
}

答案 1 :(得分:0)

这篇文章已经开放了一段时间,但我认为如果有人想要一种替代方法,我会添加我的发现。在我的例子中,我有一个保存在DB中的任务列表,每个任务的大小为1-10,表示任务的复杂性。在页面加载时,Thymeleaf将模型(任务列表)注入UI,我必须在下拉列表中预先加载每个任务的大小。下面的代码对我有用。

<强> Task.java

private int size;

private static int[] complexity = {1,2,3,4,5,6,7,8,9,10};

//getters and setters of course for each of the above variables

<强> HTML

//for each task element in the UI, create the dropdown and pre-populate the selected value
<select id="size">
     <option th:each="size : ${task.complexity}"
         th:value="${size}"
         th:selected="${task.size} == ${size} ? true : false"
         th:text="${size}">
     </option>
</select>