2016-03-06 51 views
2

我需要在登录控制器中设置一个带重定向的cookie。我使用下面的代码来设置cookie。设置Cookie在春季web-mvc中不工作4

@RequestMapping("/fbresponse") 
public String getToken(@RequestParam(required = false, value = "code") String code, HttpServletResponse sResponse) { 
    sResponse.addCookie(new Cookie("logged", "123")); 
    return "redirect:"+user.getLastPage(); 
} 

在我的索引我尝试使用下面的代码以检索该cookie:

@RequestMapping("/") 
public String getIndex(@CookieValue(value="logged", required=false)String test){ 
    user.setLastPage("/"); 
    loginCheck(); 
    System.out.println(test); 
    return "index"; 
} 

但它总是返回null。我试着返回新的ModelAndView。它也没有工作,因为我需要模型中的一些组件,它不适合我的要求。 如何设置和检索cookie?有没有可能用重定向做到这一点?

UPDATE 我在我的登录控制器中有class级别的@RequestMapping。

@Controller 
@RequestMapping("/login") 
public class LoginController { 

    @RequestMapping("/fbresponse") 
    public String getToken(@RequestParam(required = false, value = "code") String code, HttpServletResponse sResponse) { 
     sResponse.addCookie(new Cookie("logged", "123")); 
     return "redirect:"+user.getLastPage(); 
    } 
} 

当我删除类级别请求映射添加cookie的作品。如何正确添加一个cookie与类级别请求映射?

+0

您可能需要设置Cookie的路径:http://docs.oracle.com/javaee/6/api/javax/servlet/http/Cookie.html#setPath%28java.lang.String%29 –

+0

它纠正了这个问题。你可以请添加这个答案,以便我可以接受它。 – paarandika

回答

7

你需要set the path的cookie,否则它只对当前路径有效。