选项中的默认值为"名字"。 当我选择时,让我们说,用手机搜索,按"搜索"并获得结果页面,表单选项重置为默认值。但我需要它来保留我选择的变体,在这种情况下它是"移动电话"。什么必须在HTML中改变?
收到搜索结果后,'选项'应该留下"移动电话":
html代码:
<label class="labelWidthExtra">
<select name="typeOfSearch">
<option th:each="s : ${selection}" th:text="${s}">
</option>
</select>
</label>
在JSP + Spring标签的情况下,很容易解决它:
<label>
<sf:select path="typeOfSearch" items="${selection}"/>
</label>
但是Thymeleaf令人困惑......
答案 0 :(得分:1)
我假设页面在点击“搜索”时重新加载。要保留选择,您必须使用“先前选择此选项吗?”信息扩展您的DTO。您的Thymeleaf样本将产生以下结果:
<label class="labelWidthExtra">
<select name="typeOfSearch">
<option th:each="s : ${selection}"
th:text="${s.text}"
th:selected="${s.selected}">
</option>
</select>
</label>
答案 1 :(得分:1)
最终找到了解决方案。
html方:
<option th:each="s : ${selection}"
th:text="${s}"
th:selected="${s.equals(selector)}">
</option>
控制器端(在Kotlin中):
@PostMapping(value = "/contactsSearch")
fun searchForContacts(@RequestParam(value = "typeOfSearch") typeOfSearch: String,
@RequestParam(value = "searchParam") searchParam: String, model: Model): String {
val contacts = contactService.retrieveContactsBySearch(typeOfSearch, searchParam)
model.addAttribute(CONTACT_LIST, contacts)
model.addAttribute(SELECTOR, typeOfSearch)
model.addAttribute(SEARCH_PARAM, searchParam)
model.addAttribute(SELECTION, SELECTION_PARAMS)
return CONTACTS_SEARCH
}