gpt4 book ai didi

java - 如何在重定向之间保留模型属性?

转载 作者:行者123 更新时间:2023-12-04 02:50:33 25 4
gpt4 key购买 nike

我正在尝试为网站编写密码重置功能。我遇到了一个问题,我正在使用几个重定向从 postmappings 转换到 getmappings 并且它们似乎没有携带他们需要的属性,即我试图重置密码表单的用户对象,在这里是我的映射之一的示例:

@PostMapping("/user/forgot")
public String emailCheck (@RequestParam String email, Model model){
User user = userDao.findByEmail(email);
if (user==null){
model.addAttribute("wrongEmail", true);
return "redirect:/user/forgot";
}
else {
model.addAttribute("user", user);
return "redirect:/verifysecurity";
}
}

这是我然后调用用户属性的模板:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head th:replace="fragments/header :: header('Security', '')"></head>
<body>
<div th:replace="fragments/navbar :: navbar"></div>
<h1 th:if="${wrongAnswer}">Answer does not match record on file, please try again</h1>
<h1>Please answer your security question: WHat is your best friends name?</h1>
<form id="passwordForm" th:action="@{/verifysecurity}" th:method="post">
<label for="answer">Answer</label>
<br/>
<input type="text" id="answer" name="answer"/>
<input type="hidden" name="user" id="user" th:value="${user}"/>
<input type="submit" class="btn btn-block btn-primary" value="Request"/>
</form>
</body>
</html>

然后在之后的下一个映射中,我得到了用户的空指针异常:
@PostMapping("/verifysecurity")
public String verify (Model model, @RequestParam User user, @RequestParam String answer){
String security = user.getSecurity_question();
if (answer.equals(security)){
model.addAttribute("user", user);
return "redirect:/reset/password";
} else {
model.addAttribute("wrongAnswer", true);
model.addAttribute("user", user);
return "redirect:/verifysecurity";
}
}

我该如何解决这个问题,如果模型属性不起作用,我应该怎么做?

最佳答案

使用 Spring RedirectAttributes.addFlashAttribute() ,顾名思义,它存储在 flashmap 中,它内部使用用户 session 将此数据传递给下一个重定向,并删除使用的数据。

来自 spring 文档的示例:

@RequestMapping(value = "/accounts", method = RequestMethod.POST)
public String handle(Account account, BindingResult result, RedirectAttributes redirectAttrs) {
// Save account ...
redirectAttrs.addFlashAttribute("message", "Account created!");
return "redirect:/accounts/{id}";
}

关于java - 如何在重定向之间保留模型属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55285685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com