2012-07-19 2 views
0

XPages 확장 라이브러리의 모바일 컨트롤을 사용하여 iPhone 용 모바일 앱을 제작하고 있습니다.XPages 모바일 컨트롤 - 세션 스코프 변수가 손실됩니다.

첫 번째 페이지에는 범주 목록 (사용자 이름 목록)이 표시됩니다. 범주를 선택하면 선택한 사용자에게 속한 모든 문서를 나열하는 두 번째 페이지가 표시됩니다.

두 번째 페이지를 여는 URL에는 사용자 이름이 포함 된 매개 변수가 포함됩니다. 두 번째 페이지는 페이지 제목 컨트롤을 가지고 있으며 "라벨"속성에 다음 코드 추가 : -

if (param.get("User") != null) { 
    sessionScope.put("UserName", param.get("User")); 
} 
return sessionScope.UserName; 

내가 다음 페이지에 사용자 이름에 액세스 할 수 있도록 내가이 일을하고있어, 예를 사용자가 두 번째 페이지의 목록에서 문서를 열면 세 번째 페이지가 표시됩니다.

Chrome에서이 기능을 테스트 할 때 문제가 없습니다. Safari에서 테스트 할 때 두 번째 페이지가 열릴 때 sessionScope 변수가 설정되었음을 알 수 있습니다. 그러나 문서를 선택하고 세 번째 페이지가 열리면 sessionScope 변수가 사라집니다. 이 문제를 설명하는 코드를 볼 수 없으며 Chrome에서 sessionScope 변수가 여전히 3 페이지에 테스트되어 있습니다. iPhone에서 테스트 할 때도 같은 문제가 발생합니다.

이 문제는 문서 (p.3)에서 선택한 사용자 (p.2)의 문서 목록으로 돌아갈 때 어떤 사용자가 원래 선택되었는지 알 수 없다는 것입니다.

앞으로 어떤 일이 벌어지는 지에 대해 누구나 알게되거나 설명이있는 사람이 있습니까?

의견을 보내 주셔서 감사합니다.

+0

새로운 sessionScope 변수를 사용하여 몇 가지 추가 테스트를 수행했습니다. 이 문제에 아무런 문제가 없어서 제 코드에 문제가 있다고 생각합니다. 그러나 sessionScope에서 원래 변수를 제거하는 것에 대한 참조는 찾을 수 없습니다. 문제를 해결하려면이 새로운 변수를 사용하십시오. –

답변

0

입력을 먼저 sanetize하지 않는 한 매개 변수 접근법을 삼가는 것이 좋습니다. 따라서 URL 대신 userName을 scope에 직접 작성하거나 더 쉽게 sessionScope에 범주로 바인딩 할 수 있습니다. 다른 변수 이름을 사용하도록 코드를 수정하려고 했습니까?

+0

예 - 다른 변수 이름을 사용했는데, 어느정도 당황 스러웠습니다! 그러나 나는 당신의 제안을 사용하기 위해 그것을 바꿀 것이다. 고마워. –

+0

몇 가지 이름이 지정되어서는 안됩니다. cgi 변수 이름과 겹칠 수 있습니다. 다행 했어. 대답을 대답한다. – stwissel

관련 문제