J'utilise Thymeleaf avec Springboot 2.1.2, et j'ai un problème avec Thymeleaf's TH: chaque étiquette.
Voici mon code: Cependant, je rencontre l'exception suivante: p> Le débogueur dit qu'il ne trouve pas la variable, cependant Je suis sûr que la vue a un objet contraignant nommé «utilisateur» parce que je l'utilise d'autre où à l'avant. P> Voici mon contrôleur et mes entités: P> user.getAddressList().stream().forEach(x -> System.out.println(x.getLocation()));
3 Réponses :
problème non liée à la JPA après tout. Le problème est de savoir comment vous utilisez Essayez ceci: p> th: champ code>. Voir la documentation sur l'utilisation correcte: HTTPS: //www.thymelleaf. Org / doc / Tutoriels / 2.1 / Thymeleafspring.html # Dynamic-champs
<tr th:each="addr,addrStat : ${user.addressList}">
<td><input type="text" th:value="${addr.name}" th:field="*{addressList[__${addrStat.index}__].name}"></td>
Je modifie la méthode du contrôleur et ajoutez une ligne avant de renvoyer la vue: user.getaddresslist (). flux (). foreach (x -> system.out.println (x.getlocation ())); code> Je suppose que c'est la même chose que vous avez suggéré. Cependant, cela n'aide pas :(
Merci! Vous avez un peu plus tôt avec l'idée correcte que moi :)
Vous avez cette erreur: - car vous utilisez Voici un exemple rapide de la manière dont vous envoyez un objet en utilisant 1.) Votre contrôleur demandé où vous ouvrez la page HTML demandée serait quelque chose comme ceci: - 2.) Et après avoir soumis votre prochain contrôleur Serait quelque chose comme ceci: - PS strong> - Pour plus d'informations Qu'est-ce que @Modelattribute fait / est, voici une référence rapide: - @modelattribute code> strong> annotation sur votre contrôleur. Vous essayez d'envoyer un objet nommé
addr code> à votre contrôleur après soumission, mais vous n'envoyez aucun objet par le nom exact
addr code> dans / depuis votre Contrôleur d'où vous ouvrez votre page HTML demandée. P>
@modelattribute code> strong> Annotation: - P>
p>
p>
p>
addr code> est juste la variable locale dans TH: chaque itération sur utilisateur.Addresslist et
utilisateur code> est correctement défini dans le modèle
Je pensais avoir trouvé le problème ... C'est très délicat ... Je modifie le Th: chaque bloc, et maintenant c'est comme:
<tr th:each="addr : ${user.addressList}"> <td><input type="text" th:value="${addr.name}"></td> <td><input type="text" th:value="${addr.phone}"></td> <td><input type="text" th:value="${addr.location}"></td> <td><a th:href="@{/user/addr/del/{id}(id=${addr.id})}">del</a></td> </tr>
Vous ne devriez pas les séparer, vous pouvez profiter de la liaison de printemps MVC. TH: champ code> indique le champ dans l'objet de modèle où la valeur de l'entrée doit être stockée lors de la soumission. Donc, il fait référence au nom de champ dans votre référence code> objet code> et non à la variable intersation
addr code>
Vérifiez la valeur de l'objet utilisateur dans votre contrôleur. Il est présent ou non et imprimé
Votre association utilisateur et adresse est paresseuse. essayer avec fetchtypehe.action
@Govindparashar J'ai imprimé avec succès la liste, ce n'est pas null. Que devrais-je faire ensuite?
@Govindparashar and getchtype.eager ne m'aide pas.
Avez-vous imprimé une adresse adressée?
@Govindparashar oui je l'imprime, je veux dire, je imprime tous les éléments de la liste:
user.getaddresslist (). ROUs (). Foreach (x -> system.out.println (x.getlocation ())); code>
Mettez à jour votre question avec la mise en œuvre de userservice.getprofile (email)
Cette exception est étrange. Êtes-vous sûr que cela vient de cela: chacun que vous avez mis ici? Essayez de supprimer ce bloc de votre HTML et de le redéployer. Si aucune exception, le problème est le th: chacun comme vous avez dit
J'ai compris. Voir ma réponse, j'ai remplacé l'ancien texte