2014-05-15 3 views
3

내 XPage의 beforePageLoad 이벤트에서 프로필 문서의 값을 가져 오려고합니다. 그러나 내 SSJS 코드가 0을 반환 계속XPages - 프로필 문서에서 값 가져 오기

var currdb:NotesDatabase = database; 
var profdoc:NotesDocument = currdb.getProfileDocument("frmProfile",""); 
var showRefInfo = profdoc.getItemValueString("ShowReferenceInformation"); 
sessionScope.put("showRefInfo",@Text(showRefInfo)); 

필드 "ShowReferenceInformation는"1 또는 0 I 0에서이 값을 1로 변경 중 하나의 값을 가질 수 있습니다 이렇게하려면 내가 서버 사이드 자바 스크립트 사용합니다. 무엇이 이것을 일으킬 수 있습니까?

답변

9

웹상의 프로필 문서는 항상 과도하게 캐시되어 왔으며, XPage에서는 여전히 그렇습니다. 대부분의 경우, 일부 요청은 새로운 값을 얻지 만, 다른 요청은 임의의 시간이 지난 후 캐시가 완전히 새로 고쳐지지 않을 때까지는 나타나지 않습니다.

+0

감사합니다. 지금 상황입니다. 오늘 다시 확인했는데 동일한 코드에 대해 올바른 값이 반환되었습니다. –

+0

나는 그걸 해결하기 위해 두 가지 길을 갔다. 다른 사람들과 마찬가지로, 나는 일반적으로 사용자가 입력 한 뷰를 가지고 정상적인 조회 만하는 것으로 전환했습니다. 새로운 경우에는 OpenNTF API의 "Database # getDocumentByKey"가 사용하는 경로를 사용하여 UNID가있는 문서를 키의 해시로 사용했습니다. 그 두 번째는 키 기반의 새로운 앱에서 그렇게 할 때 가장 좋습니다. 정상적인 경우 뷰 - 룩업 경로는 충분히 빠릅니다. –

1

나는 Jesse와 동의합니다. 캐싱은 일반적으로 프로필 문서에서 큰 문제입니다. Notes에서 XPage 환경으로 전환 할 때마다 항상 동일한 문제가있었습니다.

해결 방법은 프로필 문서를 만드는 간단한 에이전트를 만든 다음이를 처리 할보기를 만드는 것입니다.

+0

제안 해 주셔서 감사합니다. –

2

이전 2 개의 답변에 동의하십시오. xpage에서 프로파일 문서를 사용하지 마십시오. HTTP 태스크가 새로 고쳐지면 캐시가 새로 고쳐집니다. 이는 대부분의 환경에서 허용되지 않습니다. 이러한 값을 설정하려면 applicationScope와 같은 다른 메서드를 사용합니다.

하지만 당신은

+0

답장을 보내 주셔서 감사합니다. –

3

I 실제로 프로필 문서 같은 ... HTTP 매번이 항목을 변경 한 후 가서 xPages에 프로필 문서를 사용을 다시 시작할 필요로 확인하는 경우. 그러나 그것들을 사용하는 방법은 ApplicationScope 변수를 검사하고 그 변수를 읽는 동기화 된 함수에 있습니다. 프로파일에로드가없는 경우 즉시 다시 쓰십시오. 그래서 당신은 슈퍼 캐시합니다.

+0

고마워, 나는 이것을 시험 할 것이다. –

관련 문제