Spring Boot登录表单无法获取用户邮箱输入问题排查
登录表单无法获取邮箱输入的问题
我在Spring Boot应用中实现登录表单,包含邮箱和密码字段,但始终无法获取用户输入的邮箱值。
初始实现代码
表单页面(login-form.html)
<form th:action="@{/login}" method="get" th:object="${loginForm}" style="max-width: 600px; margin: 0 auto;"> <div class="m-3"> <div class="form-group row"> <label class="col-4 col-form-label">E-mail: </label> <div class="col-8"> <input type="text" th:field="*{email}" name="q" class="form-control" required /> </div> </div> <div class="form-group row"> <label class="col-4 col-form-label">Password: </label> <div class="col-8"> <input type="password" th:field="*{password}" class="form-control" required/> </div> </div> <div> <button type="submit" class="btn btn-primary">Log in</button> </div> </div> </form>
控制器代码
@GetMapping("login") public ModelAndView login(Model model, @RequestParam(name = "q", required = false) Optional<String> email) { Optional<UserDto> aUser; System.out.println(email); if (email.isPresent()) { aUser = userService.getAUserByEmail(email.get()); model.addAttribute("user", aUser); var mv = new ModelAndView("user/user-list", model.asMap()); return mv; } else { model.addAttribute("loginForm", new LoginForm()); return new ModelAndView("/login/login-form", model.asMap()); } }
原本以为通过@RequestParam(name = "q")和HTML中的name="q"可以获取邮箱值,但控制台始终输出Optional.empty。
修改后的代码
根据建议调整实现方式后,仍然无法获取用户输入的邮箱值:
修改后的控制器代码
@GetMapping("login") public ModelAndView login(Model model, LoginForm loginForm) { Optional<UserDto> aUser; if (loginForm.getEmail() != null) { aUser = userService.getAUserByEmail(loginForm.getEmail()); model.addAttribute("user", aUser); var mv = new ModelAndView("user/user-list", model.asMap()); return mv; } else { model.addAttribute("loginForm", new LoginForm()); return new ModelAndView("/login/login-form", model.asMap()); } }
修改后的表单页面(login-form.html)
<form th:action="@{/login}" method="get" th:object="${loginForm}" style="max-width: 600px; margin: 0 auto;"> <div class="m-3"> <div class="form-group row"> <label class="col-4 col-form-label">E-mail: </label> <div class="col-8"> <input type="text" th:field="*{email}" class="form-control" required /> </div> </div> <div class="form-group row"> <label class="col-4 col-form-label">Password: </label> <div class="col-8"> <input type="password" th:field="*{password}" class="form-control" required/> </div> </div> <div> <button type="submit" class="btn btn-primary">Log in</button> </div> </div> </form>
LoginForm实体类代码
@Data @AllArgsConstructor @NoArgsConstructor public class LoginForm { private String email; private String password; }
请问问题出在哪里?
内容的提问来源于stack exchange,提问作者one-hand-octopus
相关产品推荐
相关产品推荐

