Установка переменной сеанса на всплывающем фокусе в ADF - PullRequest
0 голосов
/ 06 марта 2012

У меня есть приложение, которое немного загружено во всплывающих диалогах 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". Эта переменная будет использоваться для дальнейшей настройки страниц, контекстных меню и т. Д.

Кто-нибудь может помочь?

Jason

Ответы [ 2 ]

2 голосов
/ 25 апреля 2012

Вы можете прикрепить событие щелчка к телу или к div любого всплывающего окна, используя JavaScript. И это может быть достигнуто из бэкэнда путем запуска JavaScript из метода Listener из PopupFetchListener Как:

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

Тогда вы можете следовать любому из следующих способов.

Добавьте командную кнопку с actionListener и оставьте ее скрытой. С помощью JavaScript-метода всплывающего окна, вызванного щелчком мыши, вы можете вызвать событие нажатия этой скрытой кнопки:

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

Это запустит actionListener.

Или вы можете воспользоваться помощью af:serverListener для вызова метода поддержки.

Я не проверял, но это должно работать.

1 голос
/ 07 марта 2012

Всплывающий компонент имеет событие PopupFetchListener. Событие запускается, когда отображается всплывающее окно. Захватите этот метод в вашем компоненте поддержки и установите там его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...