2011-01-13 4 views
0

ConversationScoped bean은 ViewScoped bean보다 ViewScoped bean보다 짧게 살 수 있기 때문에 ViewScoped bean에 삽입 할 수 없으며, 그 반대의 경우도 마찬가지입니다. ConversationScoped 빈은 오래 사용되지 않습니다. preRenderView 수신기로 주입을 수행하는 경우 : f : event를 사용하여 ViewScoped bean에 ConversationScoped bean을 삽입

이러한 제한을 극복하기 위해, I는 F를 사용하여 시도

<f:metadata> 
    <f:event type="preRenderView" listener="#{taskController.initializeTask(workPackageConversation.workPackage)}" /> 
</f:metadata> 

이 howver 작동하지되지 아니하며 청취자 initializeTask 않으며 게터 getWorkPackage가되고있다 라는.

FacesContext를 사용하여 다른 관리 Bean을 조회 할 수 있다는 것을 알았지 만, 왜 이것이 작동하지 않는지 궁금합니다. 다른보기에서보기로 이동할 때 f : 이벤트 리스너가 호출되지 않았기 때문입니까? 즉. 리디렉션 또는 직접 페이지보기없이

Seam 3 Faces의 viewAction 태그도 사용해 보았습니다. 아무 소용이 없습니다. 어느 쪽이라도 불리지 않는다.

미리 감사드립니다.

답변

0

어쨌든 평범한 범위의 bean에 항상 프록시를 가지고 있기 때문에 평생 문제가 생기지 않을 것이라고 생각합니다. 대화이 활성화되어 있거나 활성 상태가 아닌 동안 대화 범위의 bean을 참조 해제하거나 항상 올바른 대화를 얻을 수 있습니다.

관련 문제