我在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的版本等上尝试过它,以确保它与代码相关的问题。