Thymeleaf选择选项重置为默认值

时间:2017-11-22 10:46:41

标签: java html thymeleaf

html中有一个搜索表单: Initial form

选项中的默认值为"名字"。 当我选择时,让我们说,用手机搜索,按"搜索"并获得结果页面,表单选项重置为默认值。但我需要它来保留我选择的变体,在这种情况下它是"移动电话"。什么必须在HTML中改变?

表格填写: Form filled in

收到搜索结果后,'选项'应该留下"移动电话": After receiving search results

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令人困惑......

2 个答案:

答案 0 :(得分:1)

我假设页面在点击“搜索”时重新加载。要保留选择,您必须使用“先前选择此选项吗?”信息扩展您的DTO。您的Thymeleaf样本将产生以下结果:

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
    }