相关疑难解决方法(0)

什么时候SpringMVC中的@SessionAttributes被删除了?(带代码示例)

在什么情况下@SessionAttributes被清除?当我尝试在页面中使用两个模型时,我发现了一些令人困惑的行为.

当我使用此控制器执行GET后跟POST时...

@Controller
@RequestMapping("/myPage*")
@SessionAttributes(value = {"object1", "object2"})
public class MyController {

  @RequestMapping(method = RequestMethod.GET)
  public String get(Model model) {
      model.addAttribute("object1", new Object1());
      model.addAttribute("object2", new Object2());
      return "myPage";
  }

  @RequestMapping(method = RequestMethod.POST)
  public String post(@ModelAttribute(value = "object1") Object1 object1) {
      //do something with object1
      return "myPage";
  }
}
Run Code Online (Sandbox Code Playgroud)

... object2从模型中清除.它不再作为@SessionAttribute存在,无法在我的视图页面上访问.

但是,如果第二种方法的签名被修改为......

public String post(@ModelAttribute(value = "object1") Object1 object1,
                   @ModelAttribute(value = "object2") Object2 object2) {
Run Code Online (Sandbox Code Playgroud)

...然后object2不会从模型中清除,并且在我的视图页面上可用.

@SessionAttributes的javadoc说:

...一旦处理程序指示其会话会话完成,将删除...属性.

但我没有看到我在第一个例子中表示完成了会话会话,但在第二个例子中没有表明.

任何人都可以解释这种行为或是一个错误吗?

java session spring controller spring-mvc

13
推荐指数
1
解决办法
2万
查看次数

打开新的浏览器选项卡时SessionAttributes

我有一个Spring-mvc应用程序,在每个控制器中我向SessionAttributes添加一个表单,以便在保存,删除或执行另一个get请求时保留属性.当我尝试在另一个浏览器选项卡中打开某个链接并尝试提交第一个链接时,会出现主要问题.我尝试了这个解决方案但是当我进行重定向时(在控制器中我只有1个返回视图而其他方法进行重定向)它会创建一个新的会话而无法找到前一个.

我有另一个关于这个使用spring-session的问题的问题,问题它在这里,但我不知道这是否也会起作用.

java spring spring-mvc

8
推荐指数
1
解决办法
760
查看次数

标签 统计

java ×2

spring ×2

spring-mvc ×2

controller ×1

session ×1