2014-02-08 4 views
0

나는 클라이언트 측 상태 저장이있는 Myfaces 2.2를 사용하고 있습니다. 뷰맵에 저장된 ViewScoped beans & 데이터가 사용자 세션이 삭제 된 후에 손실된다는 것을 알았습니다. 이것이 올바른지, 이것이 예상 된 동작인지 알 수있게되었지만 세션이 종료 된 후 만료 된 예외보기를 피하는 방법은 무엇입니까?뷰 파인 된 bean/viewmap 세션 파괴 후 (클라이언트 측 저장 사용) 생존하는 방법?

내 문제는 몇 가지 비활성 기간 (예 : 20 분 후) 후에 사용자 세션을 꽤 빨리 파괴하지만 그 후에도 (클라이언트 저장을 사용할 때) 뷰 스코프 데이터가 생존하기를 원하기 때문에 사용자가 다시 돌아올 때 세션을 삭제하면 페이지를 새로 고칠 필요가 없습니다. 나는 왜 그런지 모른다. & 이것이 어떻게 구현 되었는가? 사용자가 웹 사이트의 일부분을 읽거나 바뀌어서, &이 돌아 왔고, &이 열린 페이지와 상호 작용할 때, 나는 그 일을 어떻게 할 것인가는 매우 정상적이다. 국가 없으면? 이것이 공개 웹 사이트의 일반적인 요구 사항이라고 생각합니다.

클라이언트 쪽 상태 저장 (내 페이지가 여전히 작동)을 사용하는 경우 내부적으로 사용되는 jsf viewstate가 손실되지 않는다고 생각하지만 viewstoped와 함께 페이지에 직렬화 된 범위의 viewscoped beans가 그 이유는 무엇입니까?

이렇게 설계된 동작 인 경우 세션 유효 기간이 만료 된보기 범위 데이터를 만들 수있는 방법이 있습니까?

+0

보기 범위는 세션 범위보다 좁은 범위입니다. 그것은 세션 타임 아웃을 살아남아서는 안되며, 만약 그렇다면 클라이언트 또는 서버 상태 저장 여부에 따라 큰 불일치가 발생합니다. – Kayaman

+1

뷰 스코프는 세션 범위에 따라 달라집니다 (빈은 세션의 컨텍스트에 저장됩니다). 따라서 세션을 파괴하면 빈이 제거됩니다. – kolossus

+0

그렇다면 세션이 종료 된 후 만료 된 예외보기를 피하는 방법은 무엇입니까? 서버에서 사용자 세션을 20 분 동안 만 유지하지만 사용자가 웹 사이트의 일부 섹션을 읽거나 20 분 동안 자리를 비 웠을 때 매우 정상적이며 & 돌아와서 & 열린 페이지와 상호 작용할 때 어떻게 복원합니까? 그것에 대한보기 상태? 이것은 어떤 웹 사이트에서도 꽤 일반적인 시나리오입니다. 다른 JSF 웹 사이트는 어떻게 처리합니까? 간단히 말해서 그는 언제든지 그가 돌아와서 이전 페이지와 상호 작용할 때 사용자에게 응답 할 수 있기를 원하며 어떻게 설계 할 수 있습니까? –

답변

0

내가 메일 링리스트에서 MyFaces 사용자로부터받은 답변 :

viewRoot.getAttributes()지도 세션이 파괴 후에도 viewscoped 값을 유지하는 데 사용할 수 있습니다. 따라서 viewRoot.getViewMap()에 값을 저장하는 대신 viewRoot.getAttributes()이 반환하는지도에 저장하십시오. 그러나 저장된 값을 직렬화 할 수 있도록주의를 기울여야합니다.