我想从用户输入中获取一些数据,然后在controllers
之间进行传输。但是出于安全考虑,此传输必须在后台 中进行。 。我不想在URL上发送参数。
我想将在page1
控制器中创建的用户对象发送到page2
。
我为此使用了模型方法,但没有成功。
@Controller
public class DemoController {
...
..
.
@GetMapping("/page1")
public String page1(Model model) {
User user = new User();
user.setName("TestName");
user.setSurname("TestSurname");
user.setMail("xyzabc@gmail.com");
model.addAttribute("user", user);
return "redirect:/page2";
}
@GetMapping("/page2")
public String page2(@ModelAttribute("user") User user, Model model) {
System.out.println(user.toString());
return "page2";
}
.
..
...
}
如何转移对象?
答案 0 :(得分:1)
此问题有2个解决方案:
解决方案1:将对象存储在
session
代码示例:
@GetMapping("/page1")
public String page1(Model model, HttpSession session) {
...
session.setAttribute("user", user);
return "redirect:/page2";
}
@GetMapping("/page2")
public String page2(Model model, HttpSession session) {
User user = null;
if (session.getAttribute("user") != null) {
user = (User) session.getAttribute("user");
System.out.println(user.toString());
}
return "page2";
}
解决方案2:使用转发而不是重定向
代码示例:
@GetMapping("/page1")
public String page1(Model model) {
...
model.addAttribute("user", user);
return "forward:/page2";
}