2012-01-10 4 views
2

私のアプリケーションがしばらくの間、重複した投票を許可していて、最終的に問題をデバッグしたのはなぜかと思いました。Java Springでクッキーの値がクッキー名として登場していますか?

投票すると「投票」という名前のCookieが取得され、その値は投票した「もの」のIDです。

Cookie voteCookie = new Cookie("vote", "1901"); 
voteCookie.setMaxAge(60*60*24*365); 
response.addCookie(voteCookie); 

私は、このように私の春コントローラーでこのクッキーを読んだとき、「1901」

を私はクライアント(クローム)をチェックし、値が「投票」という名前のクッキーがあります:

Cookie[] cookies = request.getCookies(); 

私は今、2枚のクッキー持っている:JSESSIONIDのような他のクッキーが正しい

CookieName: ["vote"] Value: [""] 
CookieName: ["1901"] Value: [""] 

を:

CookieName: ["JSESSIONID"] Value: [000046KQaPe3T8gwXVuB3zhNrON:-1] 

私は間違っていますか?

編集:

voteCookie.setValue(voteCookie.getValue() + "," + cookieValue); 

そして、これが問題の原因であると考えられる:新しいものと古い値を付加し、いくつかのコードがあったが判明。 "、"(カンマ)の後の値は、その名前の別のクッキーになりました。これがWebSphere Application Serverの問題なのかどうかはわかりません。区切り文字を " - "に変更して、すべてが機能します!

+1

いいです「」 ; '。このコンストラクタを呼び出す実際のコードを投稿できますか? – adarshr

+0

クッキーを列挙するコードだけでなく、 – adarshr

+0

クッキーがレスポンスに追加されているように見えるので、そうではありません。 –

答えて

1

問題は、クッキーの値にカンマがあるためです。この質問では、Javadocをいくつかの参照があります。Cannot get value from cookie in Java. Value contains colons

私が区切り文字を変更 - そして、すべては私が `新しいクッキー(「投票」、「1901」)よりも、それまでではありませ感じる

関連する問題