2013-11-15 3 views
0

내 JSF 프로젝트에는 다중 페이지 마법사가 있습니다. 해당 마법사에 대해 @ConversationScoped CDI 빈을 사용하고 있습니다. 대화가 잘 작동합니다. 사용자가 마법사의 첫 번째 페이지로 이동하면 새 대화가 시작됩니다. 사용자가 페이지의 제출 버튼을 클릭하면 대화가 종료됩니다. 하지만 몇 가지 질문이 있습니다. 마법사의 중간에, 사용자가 주소 표시 줄에 URL을 입력하고 제출 버튼을 클릭하지 않고 다른 페이지로 탐색,하면 어떻게됩니까
CDI 대화 끝내기

  1. , 난 여전히 대화를 종료 할 수있는 방법이 있습니까?
  2. 이 상황에 대해 귀찮게해야합니까? 아니면 이러한 비 종결 대화를 축적하여 응용 프로그램의 오버 헤드가 될 수 있습니까?

답변

1

대부분의 응용 프로그램은 사용자가 현재있는 곳을 추적하는 일종의 시스템으로 끝납니다. 이것은 JSF 2.2에서 @FlowScoped에 도움이되기로되어 있습니다. 그 대신 사용할 수 있으면 모든 것이 관리되어야합니다. 예제를 찾는 것이 정말 쉽습니다.

FlowScoped를 사용할 수없고 @ConversationScoped를 유지하려면 사용자 위치를 추적하기 위해 자체 시스템을 구현해야합니다. 사용자가 더 이상 내 흐름에 있지 않으면 대화를 종료합니다. 대화를 얻으려면 :

How to cleanly end a CDI @ConversationScoped 그러나 나는 http://deltaspike.apache.org/core.html 및 사용을 위해 갈 것이다 : 여기

@Inject Conversation conversation; 

// conversation.end(); 

이 구현을위한 유용한 부분이다.

MyBean myBean = BeanProvider.getContextualReference(MyBean.class, false);

개인적으로 나는 FlowScoped를 사용할 수없는 경우 같은 일을 달성하기 위해 Deltaspikes JSF 모듈의 유형 안전한 항해의 확장을 할 것입니다.

행운을 빌어 요

+0

IMO FlowScoped는 대부분의 유스 케이스에 대해 과도하게 설계되었으며 CODI 범위가 더 좋습니다. 나는 DeltaSpike가 그들도 가질 수 있기를 바랍니다. –

+0

@DarWhi 좀 더 먼저 사용해야한다는 것에 동의 할 수도 있습니다. 델타 스 파이크 (Deltaspike)는 그들을 가질 것이고, 주요 커미터에 대한 시간 제한으로 인해 지금까지 수입을 중단하고있는 철저한 버전으로 들어서고있다. –

+0

제공된 SO 링크가 흥미로운 것 같습니다. 감사. – prageeth