如何在Spring MVC中更新会话属性

如何在Spring MVC中更新会话属性,spring,session,model-view-controller,Spring,Session,Model View Controller,如何在SpringMVC中更新会话属性?我尝试了以下代码: @Controller @RequestMapping("/panel") @SessionAttributes({"access"}) public class AdminController extends ErrorsController { private final static String SECURE_ADMIN_PASS = "123123"; @ModelAttribute("access") public Bo

如何在SpringMVC中更新会话属性?我尝试了以下代码:

@Controller
@RequestMapping("/panel")
@SessionAttributes({"access"})
public class AdminController extends ErrorsController {

private final static String SECURE_ADMIN_PASS = "123123";

@ModelAttribute("access")
public Boolean getAccess() {
    return false;
}

@RequestMapping(value = {"/", ""}, method = RequestMethod.GET)
public String adminGeneralPage(@ModelAttribute("access") boolean access) {
    if (!access) return "adminPages/enterPassword";
    return "adminPages/home";
}

@RequestMapping(value = "/password", method = RequestMethod.POST)
public String enterPassword(@ModelAttribute("access") boolean access,
                            @RequestParam("password") String password, HttpServletRequest request) {
    if (password.equals(SECURE_ADMIN_PASS)) {
        request.getSession().setAttribute("access", true);
        return "adminPages/home";
    }
    return "adminPages/enterPassword";
}

}
我的测试用例:

-打开主页

-自动重定向到带有密码的页面表单

-输入密码

-自动重定向到主页面,一切正常,页面打开

-刷新页面

-再次请求密码

如下更新您的enterPassword()方法:

@RequestMapping(value = "/password", method = RequestMethod.POST)
public String enterPassword(HttpServletRequest request, Model model, @ModelAttribute("access") boolean access,
                            @RequestParam("password") String password) {
    if (password.equals(SECURE_ADMIN_PASS)) {
        model.addAttribute("access", true);
        return "adminPages/home";
    }
    return "adminPages/enterPassword";
}

这不是
@SessionAttribute
的目的。只需像通常那样使用会话属性。