Je veux prendre un identifiant comme entrée par l'utilisateur et le transmettre au contrôleur pour obtenir les données d'un identifiant particulier
cela fonctionne lorsque je passe l'identifiant manuellement dans l'URL - http: // localhost: 8080 / student / 1
@GetMapping(value = "/student/{id}") public Optional<Student> getStudentDetail(@PathVariable int id){ return studentRepository.findById(id) ; }
<form th:action="@{{student}/{id}}" th:object="${Student}" method="post"> Roll Number:<br> <input type="text" th:field="*{id}"><br> <br><br> <input class="button" type="submit" value="Submit"> </form>
Page d'erreur de marque blanche Cette application n'a pas de mappage explicite pour / error, donc vous voyez cela comme une solution de secours.
Wed Jun 19 11:04:22 IST 2019 Une erreur inattendue s'est produite (type = Erreur interne du serveur, état = 500). Une erreur s'est produite lors de l'analyse du modèle (template: "class path resource [templates / student.html]")
3 Réponses :
vous devez utiliser th: field
pour :
<input type="text" th:field="*{id}">
Page d'erreur Whitelabel Cette application n'a pas de mappage explicite pour / error, donc vous voyez cela comme une solution de secours. Wed Jun 19 11:27:55 IST 2019 Une erreur inattendue s'est produite (type = Internal Server Error, status = 500). Erreur lors de l'exécution du processeur 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagP rocessor' (template: "student" - ligne 16, col 40)
en utilisant
changez comme AmirBll l'a dit, Aussi , vous devez changer la méthode HTTP
de votre contrôleur à partir de @GetMapping (value = "/ student / {id}")
à @PostMapping (value = "/ student / {id}")
en tant que données de formulaire
La soumission est la méthode POST
que vous avez déclarée dans le formulaire.
Dans l'attribut form, vous avez utilisé method = "post" tandis que dans la classe de contrôleur vous utilisez @GetMapping. Utilisez ce
<input type="text" th:="*{id}"><br>
au lieu de
<input type="text" th:field="*{id}">
Faites également getter / setter des attributs id dans la classe Student
java.lang.IllegalStateException: Ni BindingResult ni objet cible ordinaire pour le nom de bean 'Student' n'est disponible comme attribut de requête
essayez avec th: object = "$ {étudiant}" au lieu de th: object = "$ {Student}". De plus, la classe Student doit être sous le package utilisé dans @ComponnetScan
pouvez-vous confirmer que le bean de formulaire Student est en cours de chargement dans le contexte de l'application
Non, il n'est pas chargé dans le contexte de l'application
charger cette classe Form Bean dans l'applicationContext, ressemble au problème lié à la non-disponibilité du bean