2011-08-02 5 views
1

web.xml의 세션 속성에있는 논리적 뷰 및 뷰의 수를 1로 정의 했으므로 최대 1 개의 뷰만 있습니다. 감안할 때 나는 몇 가지 질문이 있습니다.사용자간에 JSF 뷰를 공유합니까?

  • 이 #는 (는) 지정된 사용자에게 특정한가요? 의미,이보기의 수를 사용자 당 1로 제한합니까? ** 그렇다면 여러 사용자간에 동일한 JSP에 대해 여러 개의 뷰 표현이있을 수 있습니까?

  • 뷰가 오히려 일반적이고 사용자 특정 데이터가 포함되어 있지 않으므로 사용자간에 JSF 뷰를 공유하는 방법이 있습니까?

고마워요!

답변

3

"사용자"의 일반적인 정의가 실제로이 "HTTP 세션"인 경우 그렇습니다. 그렇습니다. 뷰는 기본적으로 HTTP 세션에 저장되며 이름이 javax.faces.ViewState 인 숨겨진 HTML 입력 필드에 의해 참조됩니다. 서로 다른 HTTP 세션은 자신의 견해를 서로 공유하지 않을 것입니다. 그렇지 않으면 분명히 거대한 버그와 보안 허점이었을 것입니다.

세션의 (논리적) 뷰 수를 1으로 설정하면 동일한 세션의 다른 창/탭에서 POST 양식을 포함하는 여러보기를 사용할 수있는 가능성을 제거합니다. 최종 사용자가 새 창/탭을 열 때마다 최종 사용자가 이전 창/탭에서 POST 요청을 실행할 때마다 최종 사용자는 중 하나만을보기로 유지하도록 구성했기 때문에 ViewExpiredException을 받게됩니다. 마지막으로 열었습니다.

+0

감사합니다. BalusC. 흠 .. :-(JSF에서 오히려 정적 인 (일회용, 읽기 전용) 뷰를 처리하는 가장 좋은 방법은 무엇입니까? 대부분의 페이지가 일부 예외를 제외하고 사용자 기반에 일반적이라고 가정하고, (기존의 뷰를 전체 메모리 풋 프린트를 줄이기 위해 가능한 한 많은 세션에서 재사용 할 수 있습니다.) JSF (포틀릿) 세계에서는 이것이 가능하지 않습니까? 희망하지 않습니다. –

+0

추가 오버 헤드가 필요 없습니다. (즉, 초기화의 수를 늘릴 것이기 때문에) 요청 스코프 된 빈 (bean)을 사용한다. 나는 데이터의 성격과 사용자 집단에게 일반적인 애플리케이션 스코프 된 콩에 더 기대고있다. 뷰 범위를 사용하고 있지 않습니다. 내가 아직 명확하지 않은 점은 모든 JSP가 특정 세션에 대해 고유 한 뷰를 생성한다는 것입니다. 참조 된 콩의 범위 지정을 사용할 수는 있지만 그 세션을 통해 (그 일반 성격을 부여) 동일한 시각을 공유 할 수 있으므로 전체 # 보기의 –

+0

보기는 ''과 같이 POST 양식이 포함되어있을 때만 세션에서 작성되고 저장됩니다. 그 중 하나가없는 경우 (일반 페이지 - 페이지 탐색이 아닌),이 또한 걱정할 필요가 없습니다. 그런데 JSF 2.x에서는 새로운 부분 상태 저장 메커니즘 덕분에 JSF 1.x와는 달리 평균 뷰 크기가 크게 줄어 들었습니다. 상태에는 전체 마크 업 대신 필요한 양식 구성 요소 만 포함됩니다. – BalusC

관련 문제