Ravi de vous rencontrer, c'est NekoSarada1101. C'est le premier message de Qiita. J'étudie Java et les servlets dans une école professionnelle. J'étudie actuellement le framework Spring par moi-même et je publierai un article sur une erreur qui a pris du temps à résoudre.
J'ai défini le contrôleur suivant pour valider la saisie de l'écran de connexion de l'application Web développée pour étudier Spring.
@PostMapping("/auth")
public String postLogin(@ModelAttribute @Validated LoginForm form, Model model, BindingResult result) {
if (result.hasErrors()) {
return "login";
}
User user = userService.login(form.getId(), form.getPassword());
model.addAttribute("user", user);
return "redirect:/menu";
}
S'il n'y a pas de problème avec l'entrée, revenez à l'écran suivant, et s'il y en a, revenez à l'écran de connexion. Lorsque j'envoie une demande à ce contrôleur ...
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Apr 28 14:36:33 JST 2020
There was an unexpected error (type=Bad Request, status=400).
L'erreur ci-dessus était affichée à l'écran.
La cause était l'ordre des arguments du contrôleur. Il semble que le BindingResult doit être défini immédiatement après l'objet Form à valider.
@PostMapping("/auth")
public String postLogin(@ModelAttribute @Validated LoginForm form, BindingResult result, Model model) {
if (result.hasErrors()) {
return "login";
}
User user = userService.login(form.getId(), form.getPassword());
model.addAttribute("user", user);
return "redirect:/menu";
}
Il doit être dans l'ordre de hoge (Form, BindingResult, Model)
comme ceci.
Il n'y a pas de journal des erreurs sur la console et c'est la première fois qu'une erreur se produit en raison de l'ordre des arguments. Je n'avais aucune idée de la nature du problème et il m'a fallu beaucoup de temps pour le résoudre.
De plus, comme je l'ai écrit au début, je ne suis pas habitué à ces sorties dans le premier post, donc si vous avez des erreurs ou des conseils, je vous serais reconnaissant de bien vouloir me le faire savoir.
Recommended Posts