2012-03-06 2 views
0

ADF 팝업 대화 상자에 다소 과중한 응용 프로그램이 있습니다. 그들은 다음과 같이 인덱스 페이지에 정의됩니다 팝업이 열리면 및/또는 초점을 수신 할 때마다팝업 포커스의 세션 변수 설정 ADF에서

<af:popup id="popup1" contentDelivery="lazyUncached" binding="managedBean1"> 
    <jsp:include page="page1.jsp" /> 
</af:popup> 
<af:popup id="popup2" contentDelivery="lazyUncached" binding="managedBean1"> 
    <jsp:include page="page2.jsp" /> 
</af:popup> 

etc, etc. 

는 내가 뭘하고 싶은 것은, 나는 "whereami"라는 세션 범위 변수를 설정합니다. 이 변수는 페이지, 컨텍스트 메뉴 등을 추가로 사용자 정의하는 데 사용됩니다.

누구든지 도와 줄 수 있습니까?

제이슨

답변

1

팝업 구성 요소에는 PopupFetchListener 이벤트가 있습니다. 이벤트가 팝업되면 표시됩니다. backing 빈에서 해당 메소드를 캡쳐하고 세션 빈을 설정하십시오.

+0

나는 그것을 발견했다. 그러나 팝업이 포커스를 얻을 때마다 또는 팝업이 처음 표시 될 때만 작동합니까? 이 응용 프로그램에서 overlapped 팝업을 사용하여 whereami 변수가 엉망이 될 수 있습니다. breadcrumbs 구성 요소는 옵션이 아닙니다. – Jason

+0

사실, 대답은 "아니오"인 것처럼 보였습니다. PopupFetchListener는 팝업 포커스가 아닌 초기로드에서만 실행됩니다. – Jason

2

자바 스크립트를 사용하여 팝업 이벤트를 본문 또는 div에 첨부 할 수 있습니다. 그리고 이것은 백엔드에서 PopupFetchListener의 Listener 메소드에서 JavaScript를 시작하여 얻을 수 있습니다. 다음과 같이 :

ExtendedRenderKitService service = Service.getRenderKitService(FacesContext.getCurrentInstance(), ExtendedRenderKitService.class); 
service.addScript(FacesContext.getCurrentInstance(), "yourmethod();"); 

다음 중 하나를 수행 할 수 있습니다.

actionListener과 함께 commandButton을 추가하고 숨겨 둡니다. 팝업의 onclick JavaScript 메소드에서 다음과 같이 숨겨진 버튼의 click 이벤트를 트리거 할 수 있습니다.

var button = AdfPage.PAGE.findComponentByAbsoluteId("hiddenButton"); 
ActionEvent.queue(button,true); 

이렇게하면 actionListener가 실행됩니다.

또는 af:serverListener의 도움을 받아 콜백 메소드를 호출 할 수 있습니다.

테스트하지 않았지만 제대로 작동합니다.