Thymeleaf 下拉菜单中的默认值
Default value in drop down menu in 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>
但是如何为下拉菜单设置 pre-selected/default 值?
谢谢
编辑 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>
但这仍然没有将默认值设置为所选内容。
我想 searchCriteria.getSelectedOption()
不是 return 布尔值,但它必须是。
编辑:
<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 class 中(我不知道它实际是什么样子):
public boolean isSelected(Option option) {
return option.equals(selectedOption);
}
这个 post 已经开放了一段时间,但我想我会添加我的发现,以防有人需要其他方法。在我的例子中,我有一个保存在数据库中的任务列表,每个任务的大小为 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>
我正在使用 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>
但是如何为下拉菜单设置 pre-selected/default 值?
谢谢
编辑 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>
但这仍然没有将默认值设置为所选内容。
我想 searchCriteria.getSelectedOption()
不是 return 布尔值,但它必须是。
编辑:
<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 class 中(我不知道它实际是什么样子):
public boolean isSelected(Option option) {
return option.equals(selectedOption);
}
这个 post 已经开放了一段时间,但我想我会添加我的发现,以防有人需要其他方法。在我的例子中,我有一个保存在数据库中的任务列表,每个任务的大小为 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>