0
votes

Obtenir les données par formulaire et les transmettre au responsable du traitement

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]")


0 commentaires

3 Réponses :


0
votes

vous devez utiliser th: field pour :

<input type="text" th:field="*{id}">


2 commentaires

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



0
votes

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.


0 commentaires

0
votes

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


5 commentaires

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