내 회사의 내부 애플리케이션을위한 facelets 템플릿을 만들고 있습니다. 모양은 사용자가 선택한 스킨을 기반으로합니다 (예 : Gmail 테마).여러 WAR 파일의 쿠키
사용자가 선호하는 스킨을 쿠키에 저장하는 것이 좋습니다.
내 "사용자 환경 설정"WAR에서이 쿠키를 볼 수 있습니다. 그러나 내 다른 응용 프로그램은 쿠키를 찾을 수 없습니다. 사용자 기본 설정 WAR와 동일한 도메인/하위 도메인에 있습니다.
여기에는 몇 가지 이유가있을 수 있습니까?
여기는 선호하는 스킨을 만들거나 찾는 데 사용되는 빈입니다. 이 동일한 파일은 모든 프로젝트에서 사용됩니다.
// BackingBeanBase is just a class with convenience methods. Doesn't
// really affect anything here.
public class UserSkinBean extends BackingBeanBase {
private final static String SKIN_COOKIE_NAME = "preferredSkin";
private final static String DEFAULT_SKIN_NAME = "classic";
/**
* Get the name of the user's preferred skin. If this value wasn't set previously,
* it will return a default value.
*
* @return
*/
public String getSkinName() {
Cookie skinNameCookie = findSkinCookie();
if (skinNameCookie == null) {
skinNameCookie = initializeSkinNameCookie(DEFAULT_SKIN_NAME);
addCookie(skinNameCookie);
}
return skinNameCookie.getValue();
}
/**
* Set the skin to the given name. Must be the name of a valid richFaces skin.
*
* @param skinName
*/
public void setSkinName(String skinName) {
if (skinName == null) {
skinName = DEFAULT_SKIN_NAME;
}
Cookie skinNameCookie = findSkinCookie();
if (skinNameCookie == null) {
skinNameCookie = initializeSkinNameCookie(skinName);
}
else {
skinNameCookie.setValue(skinName);
}
addCookie(skinNameCookie);
}
private void addCookie(Cookie skinNameCookie) {
((HttpServletResponse)getFacesContext().getExternalContext().getResponse()).addCookie(skinNameCookie);
}
private Cookie initializeSkinNameCookie(String skinName) {
Cookie ret = new Cookie(SKIN_COOKIE_NAME, skinName);
ret.setComment("The purpose of this cookie is to hold the name of the user's preferred richFaces skin.");
//set the max age to one year.
ret.setMaxAge(60 * 60 * 24 * 365);
ret.setPath("/");
return ret;
}
private Cookie findSkinCookie() {
Cookie[] cookies = ((HttpServletRequest)getFacesContext().getExternalContext().getRequest()).getCookies();
Cookie ret = null;
for (Cookie cookie : cookies) {
if (cookie.getName().equals(SKIN_COOKIE_NAME)) {
ret = cookie;
break;
}
}
return ret;
}
}
내가 잘못하고있는 것을 누구든지 볼 수 있습니까?
업데이트 : 나는 조금 좁혔습니다 ... FF로 잘 작동하지만 IE는 여전히 그것을 좋아하지 않습니다.
감사합니다, 잭
그건 아니야. 나는 같은 영역에있다. 또한 경로를 "/"로 설정하려고 시도했지만 시도하지 않았습니다. –