2009-07-22 5 views
1

그래서 우리의 애플 리케이션은 나무와 표준 왼쪽 프레임처럼 설정되어, 오른쪽 프레임은 나무를 클릭하여로드 된 주요 내용을 가지고 있습니다.가능한 dijit.Tree 쿠키 문제 (SaveStateCookie)

웹 응용 프로그램은 Firefox의 메인 프레임에 일관성없는 빈 페이지를 표시합니다. 일관성이 없다는 것은 매일 매일 몇 가지를 의미하며, 거의 모든 것을 의미하는 것이 아니라 대부분의 경우를 의미합니다. 우리가 이것을 얻으면 우리의 나무를 통해 다른 페이지로 이동하면 빈 페이지가 나타납니다. "aTreeSaveStateCookie"를 삭제하면 정상적인 작업으로 복원됩니다. "aTree"는 우리 사업부의 이름입니다. dijit/Tree.js에 "SaveStateCookie"문자열이 있습니다.

이것은 IE에서 발생합니다. 단, 지금은 기억할 수없는 브라우저 오류 페이지가 표시됩니다. 그런 다음 앱에서 찾을 수있는 유일한 쿠키를 삭제할 것입니다 (IE에서 Firefox 단계를 수행하는 방법을 모르겠 음)

왜 이런 일이 발생했는지에 대한 아이디어가 있습니까?

감사 http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js
파이어 폭스를 통해

도장 1.3 3.1
IE 8
윈도우 XP
내 경우에는 내가 개인 데이터 주위에 브라우저 설정을 변경 이제까지 기억하지 않습니다.

+0

처음으로? 또는 그들이 잠시 그것에서 멀리 slogging 후에 그것은 일어나는가? 또한 데이터 저장소가 한 세션에서 다음 세션으로 변경됩니까? – seth

+0

잠시 동안 주위를 클릭 한 후에 발생합니다. 마지막 질문은 확실하지 않습니다. 다음은 몇 가지 배경입니다 : - 앱은 Liferay 포털의 탭 내 iframe으로 실행됩니다. 그러나 iframe에 탭을 남겨 두지 않아도 문제가 발생할 수 있습니다. Liferay http 세션과 우리의 app (J2EE/Struts) http 세션을 동기화 할 수있는 java 코드가 있습니다. 감사합니다 – patlv23

+0

추가 정보 : Firebug Net 탭은 요청이 있었지만 응답이 없음을 보여줍니다. http 스니퍼와 같은 문제. 서버 로그를 점검하면 요청이 수신되지 않았 음을 알 수 있습니다. 내가 새 탭을 열고 나무를로드하지 않는 응용 프로그램의 URL을 입력하면 제대로 작동합니다. 요청은 전송되고 응답은 받았습니다. – patlv23

답변

0

응답 코드가 413 (413 = 요청 엔터티가 너무 큽니다)인지 확인하십시오. 일반적으로 트리 확장 상태 (aTreeSaveStateCookie)를 저장하는 데 사용 된 쿠키가 (aTreeSaveStateCookie) 서버의 최대 요청 크기

413 오류 코드가있는 경우 최대 요청 크기를 늘리거나 (특정 웹 응용 프로그램 서버의 지침을 따르십시오) "브라우저 캐시를 지우십시오"와 같은 의미있는 오류 메시지를 표시 할 수 있습니다. 만남

0

persist 속성이 truey 값으로 설정된 경우 dijit.Tree은 확장 된 노드를 기억하도록 상태를 유지하고 있습니다. 페이지를 다시로드 한 후 확장하십시오. 매우 큰 데이터 구조가있는 상태에서 트리 상태를 유지해야하는 경우 dojo.cookie 대신 localStorage을 사용하려면 Tree을 무시하는 것이 좋습니다. .

1.9 도조 V이지만, 유사한 변화가 아닌 AMD 버전 1.3

_saveExpandedNodes: function(){ 
    if(this.persist && this.cookieName){ 
     var ary = []; 
     for(var id in this._openedNodes){ 
     ary.push(id); 
     } 
     // Was: 
     // cookie(this.cookieName, ary.join(","), {expires: 365}); 
     localStorage.setItem(this.cookieName, ary.join(",")); 
    } 
}, 

하고 수행 할 수 있습니다 그들은을위한 페이지를 표시 할 때 이런 일이 있습니까

_initState: function(){ 
    // summary: 
    // Load in which nodes should be opened automatically 
    this._openedNodes = {}; 
    if(this.persist && this.cookieName){ 
     // Was: 
     // var oreo = cookie(this.cookieName); 
     var oreo = localStorage.getItem(this.cookieName); 
     if(oreo){ 
     array.forEach(oreo.split(','), function(item){ 
      this._openedNodes[item] = true; 
     }, this); 
     } 
    } 
},