gpt4 book ai didi

java - Spring MVC session 属性初始设置

转载 作者:行者123 更新时间:2023-11-29 05:38:54 24 4
gpt4 key购买 nike

我用过Spring MVC。我将 session 属性值设置为

@RequestMapping(value = "/home", method = RequestMethod.GET)
public String initHome(Model model) {
if (!model.containsAttribute("clientObject")) {
model.addAttribute("clientObject", createDefaultClient());
}
return "homeMenu";
}

如果我单击主菜单 url(/home),它工作正常。但如果我不去home 表示它说错误为“需要 session 属性 clientObject”

所以我决定在 Controller 的构造函数中设置 session 属性

 @Autowired
public MyController(Model model) {
if (!model.containsAttribute("clientObject")) {
model.addAttribute("clientObject", createDefaultClient());
}
}

它也说错误

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“myController”的 bean 时出错

我也试过使用 RequestMapping 来设置

 @RequestMapping(value = "/", method = RequestMethod.GET)
public void initController(Model model) {
if (!model.containsAttribute("clientObject")) {
model.addAttribute("clientObject", createDefaultClient());
}

}

这个方法最初也没有被调用我的 cointroller 看起来像

@RequestMapping("/sample")
public class MyController {
..
..

是否可以在 Controller 的构造函数中设置sessionAttribute值?或任何其他方式来初始设置 session 属性?

预先感谢您的帮助。

最佳答案

假设您的 createDefaultClient 在 Controller 中添加一个 @ModelAttribute 注释。

@ModelAttribute("clientObject")
public ClientObject createDefaultClient() { ... }

此方法将在任何请求处理方法之前被调用(如 reference guide 中所述)

如果您将它与类上的 @SessionAttribute 注释结合使用(您可能已经有了)。你应该能够实现你想要的。

在您的请求处理方法(使用@RequestMapping 注释的方法)中,您现在可以简单地将客户端对象作为方法参数注入(inject)。

@RequestMapping(value = "/home", method = RequestMethod.GET)
public String initHome(@ModelAttribute("clientObject") ClientObject clientObject) {
// Do something with the clientObject
return "homeMenu";
}

这只会在同一个 Controller 内一致地工作,所以如果你需要在其他地方使用 ClientObject (例如另一个 Controller ),这是行不通的(也不是 @SessionAttributes 专为此而设计)。

关于java - Spring MVC session 属性初始设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18437491/

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