如何使用Thymeleaf获取drowpdown列表的选定对象?

时间:2016-02-10 15:08:31

标签: jsp thymeleaf

我有一个下拉列表和一个表,在下拉列表中应该是所有具有类别"软件"的对象。列出(工作正常),并在表格中列出所有具有类别"硬件"应列出。但我的目标是,如果软件与硬件不兼容,则应禁用此硬件(灰色)。

所以我试图访问"不兼容"列表,所以我可以从下拉列表中检查硬件是否与所选软件兼容。但我无法找到获得所选软件的解决方案。

这是我的.html:

<select th:field="*{objects}" >
        <option th:each="software : ${objects}" 
            th:if="${software.category} == software" 
            th:value="${software.id}"
            th:text="${software.name}">
        </option>
    </select>

    <table class="table">
        <tr th:each="hardware: ${objects}"
            th:if="${hardware.category} == hardware"
            th:class="${#lists.contains([selectedSoftware].getIncompatible(), hardware)} ? disable : normal">
            <td th:text="${hardware.id}"></td>
            <td th:text="${hardware.name}"></td>
            <td th:text="${hardware.category}"></td>
        </tr>
    </table>

1 个答案:

答案 0 :(得分:0)

首先,th:field是服务器端引擎。换句话说,th:field不知道客户当前在页面中做了什么,除非用户提交表单。我假设您提交表单,因为您有使用th:field

您没有正确使用th:object。在这里,您将所选值绑定到整个对象数组。属性<form>应指向您<select th:field="*{selectedSoftwareId}" > 中使用的configuration.selectionGranularity(a.k.a.命令)中的字段。 proper waits及以下:

WKSelectionGranularityCharacter

如果您正在寻找客户端解决方案,那么您需要使用Ajax和JavaScript。