Spring MVC @CookieValue没有找到cookie,但HttpServletRequest确实如此

时间:2017-09-19 14:28:12

标签: java spring spring-mvc cookies

我在Spring MVC网络应用中检索cookie值时遇到问题。项目配置非常基础:Eclipse和Tomcat 8.0,完整的Spring 4.3.9库,没什么特别的。 我以正常方式保存cookie,即:

@RequestMapping(value="/Main")
public String saveCookie(HttpServletResponse response) {

        response.addCookie(new Cookie("testToken", "thisistesttoken"));

    return "Profile";
}

它确实可以保存cookie。我在Chrome中检查,它是,testToken具有给定值。 但是当我尝试使用' @ CookieValue'在我的应用中检索它时注释,它只给我默认值(或者当我没有声明默认值时崩溃):

 @RequestMapping(value="/Retrieve")
 public String loadCookiePage(@CookieValue(value="testToken",
  defaultValue="notmyvalue") String testToken) {

 System.out.println(testToken);

 return "SomeOtherPage";
}

输出结果为:

 notmyvalue

但是,当我将代码切换到' HttpServletRequest'检索cookie的方法,一切正常:

 @RequestMapping(value="/Retrieve")
 public String loadCookiePage(HttpServletRequest request) {

 Cookie[] cookies = request.getCookies();
    if(cookies != null) {
        Arrays.stream(cookies)
            .forEach(c -> System.out.println(c.getName() + " " + c.getValue()));
    }
 return "SomeOtherPage";
 }

输出:

(...other cookies)
testToken thisistesttoken
(...)

现在我真的想坚持' @CookageValue'注释,因为代码以这种方式更具可读性。有没有人遇到过这个问题? 我在不同的浏览器,Tomcat的版本等上尝试过它,以确保它与代码相关的问题。

0 个答案:

没有答案