Comment puis-je obtenir l'objet sélectionné d'une liste déroulante à l'aide de Thymeleaf?


Venyla

J'ai une liste déroulante et un tableau, dans la liste déroulante tous les objets avec la catégorie «logiciel» doivent être listés (ce qui fonctionne bien) et dans le tableau tous les objets avec la catégorie «matériel» doivent être listés. Mais mon objectif est que si le logiciel est incompatible avec un matériel, ce matériel doit être désactivé (gris).

J'essaie donc d'accéder à la liste "incompatible", afin que je puisse vérifier si le matériel est compatible avec le logiciel sélectionné dans la liste déroulante. Mais je n'ai tout simplement pas pu trouver de solution pour obtenir le logiciel sélectionné.

voici mon .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>
Aboodz

Tout d'abord, le thymeleafmoteur côté serveur. En d'autres termes, thymeleafn'a aucune idée de ce que le client fait actuellement dans la page à moins que l'utilisateur ne soumette un formulaire. Je suppose que vous soumettez le formulaire depuis que vous l'avez utilisé th:field.

Vous n'utilisez pas th:fieldcorrectement. Ici, vous liez la valeur sélectionnée à l'ensemble du tableau d'objets. L'attribut th:fielddoit pointer vers un champ dans le th:object(aka Command) utilisé dans votre <form>. Par exemple et ci-dessous:

<select th:field="*{selectedSoftwareId}" >

Si vous recherchez une solution côté client, vous devez utiliser Ajax et JavaScript.

Articles connexes