2012-03-06 3 views
4

Netbeans 6.9에서 JSF 2.0 프로젝트를 만들었습니다. 나는 CDI를 사용하기 시작했다. 범위를 추가하려고 할 때 프로젝트를 생성 한 후, 뷰 스코프가 없다는 것을 발견했습니다. 대화 범위와보기 범위가 같은 것을 말하는지 알고 싶습니다. 보기 범위 대신 대화 범위를 사용할 수 있습니까? 그렇다면 어떻게 CDI로 뷰 범위를 사용할 수 있습니까? 나는 또한 이음새가 해결책이라는 것을 알게되었지만, 어떻게 이음새를 넷빈과 함께 사용할 수 있습니까? 이음새를위한 netbeans 플러그인이 있습니까? seam-3JSF 2.0에서 CDI의 경우 뷰 범위 사용 방법

감사합니다.

답변

10

CDI에 대한보기 범위가 없습니다. 대화 범위가 동일하지 않습니다. 뷰 범위 Bean은 동일한 뷰를 사용하고 페이지의 일부 또는 전체를 다시로드 할 때까지 살아 있습니다.

CDI의 대화 범위를 사용하려면 응용 프로그램에서 대화의 시작과 끝을 설정해야합니다.

내 경험으로 CDI 범위를 JSF의 뷰 범위 (예 : 세션 및 응용 프로그램 빈과 JSF 뷰 범위에 CDI 범위 사용)와 함께 사용할 수 있습니다.

업데이트 : 그러나 CDI 빈에 managad 빈을 삽입 할 수 없습니다. 다른 방법은 작동합니다. 그리고 더 일반적인 경우입니다 (더 넓은 범위에서 좁은 범위로 주입).

+0

당신은 내가보기 범위를 원한다면 @named 대신 @named를 사용한다고 말할 수 있습니다. 그리고 @managedBean에서는 CDI 범위를 사용할 수 있습니다. 예를 들어'@ManagedBean (name = "businessAddUpdate") -> @ ViewScoped -> @ conversationScope-> public class .....와 같이. ** -> 다음 줄을 의미합니다 ** 그것입니까? – Basit

+0

두 클래스를 같은 클래스의 주석에 혼합하지 마십시오. 둘 중 하나 또는 다른 것. 또한 올바른 클래스를 가져 오는 데주의해야합니다. –

+1

HHmm 이제 알았습니다. 보기 범위를 원한다면'@ManagedBean (JSf)'를 사용하지만 요청이나 세션 또는 대화 범위를 원한다면'@Named (CDI)'를 사용하십시오. Bean은 한 번에 하나의 범위에만있을 수 있기 때문에. 그렇지? – Basit

0

단순히 클래스 패스에 seam3 faces 모듈을 넣거나 @ViewAccessScpoed 내 얼굴 CODI 주석을 사용하면됩니다.

+1

CODI에는 가장자리 케이스를 처리하는 더 나은 @ViewScoped 어댑터가 있습니다. AFAIK는 DeltaSpike에서도 사용되는 AFAIK입니다. –

+0

@Dar 예, 맞습니다. DeltaSpike 용 jsf 모듈은 많이 개발되고 있으며, CODI와 이음새 개발자가 함께 작업하기 때문에 훌륭한 모듈이 될 것입니다.) – Heidarzadeh

관련 문제