2014-05-16 12 views
0

소개 세션을 사용하지 않고, 일시적으로 JSF 애플리케이션의 상태를 저장 :JSF - t : saveState X @ConversationScope

대안이 t 사용 : 아파치 토마 호크 라이브러리의 saveState을; 최근의 또 다른 대안은 CDI @ConversationScope를 사용하는 것입니다.

t : saveState X @ConversationScope
각각의 장점과 함정 무엇입니까? 어느 것을 사용하고 왜 사용합니까?
메모리 절약 (세션에 소요되는 공간과 시간)에 대해서는 어쨌든 @ConversationScope가 더 좋습니까?

상태 비 JSF X t : saveState
상태 비 실행의 가능성이있을 것 JSF 2.2에. 구성 요소 트리가 더 이상 지속되지 않으므로 t : saveState가 작동하지 않습니다. 맞습니까?

JSF 1.2에서 JSF 2.x로 이전하는 앱이 있습니다. 그것은 t : saveStave를 사용하여 많은 뷰를 가지고 있습니다.
현재 세션 크기가 너무 커지고 있습니다. 이것은 주로 세션 복제와 관련된 문제입니다.

t : saveState를 @ConversationScope로 바꾸는 것이 가치가 있습니까?


업데이트 : 대부분의 외부 사용 사례는 흐름 (예 : 마법사)입니다. 따라서 @ViewScope을 적용 할 수 없습니다.

대안이 t 사용 : 세션을 사용하지 않고, 일시적으로 JSF 응용 프로그램의 상태를 저장하는 방법에 대한

답변

3

아파치 토마 호크 라이브러리의 saveState을; 최근의 또 다른 대안은 CDI를 사용하는 것입니다. @ConversationScope

<t:saveState>은 이전 JSF 1.x 시간이며 그 용도는 해당 응용 프로그램에 남아 있어야합니다. @ConversationScope은 여러 요청을 따라 JSF 빈과 컴포넌트의 상태를 연장하고 요청을 전달하는 식별자를 사용하기 위해 CDI 1.0에서 제공됩니다.

JSF 2를 사용할 때 가장 좋은 방법은 @javax.faces.bean.ViewScoped이며, JSF 2.2부터는 CDI 1.1과 호환되는 @javax.faces.view.ViewScoped을 사용해야합니다.

CDI 1.0과 함께 JSF 2.0.x 또는 2.1.x를 사용하려는 경우 @ViewScoped을 사용할 수 없습니다. 이를 해결하기 위해 CDI가 관리하는 JSF 빈에 대한 뷰 범위를 허용하는 써드 파티 라이브러리가있다.

t : saveState를 @ConversationScope로 바꾸는 것이 가치가 있습니까?

는 JSF의 2.x에서 마이그레이션하고 있기 때문에, 당신은 모든 <t:saveState> 사용을 삭제해야합니다. JSF 2.x 버전에 따라 @ViewScope 또는 그 대안을 사용해야합니다. 흐름을 구현할 때와 같이 여러 가지 뷰를 통해 빈을 유지하고 싶지 않거나 필요가 없다면 @ConversationScope을 사용하지 않는 것이 좋습니다. 그러나 JSF 2.2는 @FlowScoped을 사용하여이 문제를 해결합니다.

상세 정보 :

+0

안녕하세요. JSF 2에서는 여전히 t : saveState를 사용할 수 있습니다. 그럼에도 불구하고 더 나은 드롭 인 것은 맞습니까? 미안하지만 이전에 말하지 않았지만 유스 케이스는 실제로 마법사 (또는 플로우)입니다. 이 경우 ConversationScope를 사용하는 것이 좋습니다. –

+0

그리고 메모리 절약에 대해 아는 것이 있습니까? 미리 감사드립니다. –

+1

@RicardoSilva JSF 2.2를 사용하는 경우 @ FlowScoped를 사용하면 마법사에 적합합니다. JSF 2.0 또는 2.1을 사용한다면'@ ConversationScoped'를 사용하십시오. –