J'ai un simple champ de saisie de texte dans lequel je dois définir la valeur par défaut d'un objet et enregistrer sa valeur finale dans un autre. Le code suivant ne fonctionne pas.
<div th:object="${form}">
<input class="form-control"
type="text"
th:value="${client.name}" //this line is ignored
th:field="*{clientName}"/>
</div>
form est un objet DTO et client est un objet Entity de la base de données.
Quelle est la bonne façon de résoudre cette situation?
En ne travaillant pas, je veux dire - disons que les valeurs initiales sont client.name = "Foo" et form.clientName = null . J'ai besoin que la valeur d'affichage du champ d'entrée soit "Foo" et que, après la soumission du formulaire, la valeur form.clientName devienne "Foo". Mais le champ de saisie n'affiche rien et lors de la soumission, la valeur form.clientName est toujours nulle.
Si quelqu'un est intéressé, a résolu ce problème en utilisant la structure suivante (trouvé la réponse dans une autre question).
th:attr="value = ${client.name}"
Vous pouvez aborder cette méthode.
Au lieu d'utiliser th:field
, utilisez html id
& name
. Définir la valeur en utilisant th:value
<input class="form-control"
type="text"
th:value="${client.name}" id="clientName" name="clientName" />
J'espère que ceci vous aidera
Si vous n'êtes pas obligé de revenir sur la page en conservant la valeur du formulaire, vous pouvez le faire:
<form method="post" th:action="@{''}" th:object="${form}">
<input class="form-control"
type="text"
th:field="${client.name}"/>
C'est une sorte de magie:
Si vous souhaitez conserver les valeurs d'entrée du formulaire, comme un retour sur la page avec une erreur de saisie de l'utilisateur, vous devrez le faire:
<form method="post" th:action="@{''}" th:object="${form}">
<input class="form-control"
type="text"
th:name="name"
th:value="${form.name != null} ? ${form.name} : ${client.name}"/>
Cela signifie :
Sans avoir à mapper votre haricot client à votre haricot de formulaire. Et cela fonctionne car une fois que vous avez soumis le formulaire, la valeur n’est pas nulle mais "" (vide)