Spring Boot重定向时Model参数丢失问题求助
Spring Boot重定向时Model参数丢失问题求助
各位大佬好,我遇到一个Spring Boot重定向的参数传递问题,想请教一下:
我写了两个Controller方法,第一个doLogin是POST请求,用来处理登录验证,验证通过后想重定向到第二个getAccountFragment方法,同时把logged和username这两个属性存在Model里。但奇怪的是,第二个方法里能读到logged是True,却读不到username(打印出来是null),实在搞不懂哪里出问题了,麻烦帮忙看看!
我的Controller代码如下:
@RequestMapping(value = "/login", method = RequestMethod.POST) public String doLogin(Model model, @RequestParam("username") String username, @RequestParam("password") String password, RedirectAttributes re) throws IOException { boolean logged = elasticSearchConnector.checkCredentials(username, password, context); model.addAttribute("logged", logged); System.out.println(model.getAttribute("logged")); // 这里打印是True if(logged) { model.addAttribute("username", username); System.out.println(model.getAttribute("username")); // 这里打印是amedeo return "redirect:/getAccountFragment"; } else { model.addAttribute("loginError", "Incorrect Login Credentials"); return String.format("fragments/login-fragment :: content(url='%s')", "/?lang=en"); } } @RequestMapping(value = "/getAccountFragment", method = RequestMethod.GET) public String getAccountFragment(Model model) throws IOException, ParseException { System.out.println(model.getAttribute("logged")); // 这里打印是True if(!model.containsAttribute("logged")) { return String.format("fragments/login-fragment :: content(url='%s')", "/?lang=en"); } else { if(!(boolean)model.getAttribute("logged")) { return String.format("fragments/login-fragment :: content(url='%s')", "/?lang=en"); } else { String username = (String) model.getAttribute("username"); System.out.println(model.getAttribute("username")); // 这里打印是null } } }
我现在的疑惑点:
- 为什么
logged能在重定向后的方法里读到,username却不行? - 是不是我传递参数的方式不对?应该用什么方法在重定向时正确传递这两个参数?
备注:内容来源于stack exchange,提问作者Amedeo Pachera
相关产品推荐
相关产品推荐

