Значение по умолчанию в выпадающем меню в Thymeleaf

Я строю веб-приложение, используя Spring MVC и тимилиф. Мое раскрывающееся меню выглядит следующим образом:

<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 ответа

Решение

Я предполагаю, что 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-10, что представляло сложность задач. При загрузке страницы Thymeleaf внедряет модель (список задач) в пользовательский интерфейс, и мне нужно было предварительно указать размер каждой задачи в выпадающих списках. Приведенный ниже код помог мне.

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>
Другие вопросы по тегам