[Oracle ADF] Bindings Layer / Contextual Events

Contextual events have two parts:

  • A publisher (or producer), such as a button that raises a named event, with or without a custom payload
  • A handler (or consumer) that listens for a specifically named event or a wildcard event, to process that event

Because Contextual Events is a feature of the binding layer, all event handlers must be exposed as action or method bindings in the page definition file of the view that is supposed to change in response to an event.


Мдя. Все так сложно. Может потом станет полегче.


Пример из видео (просто познакомиться с евентами):

https://www.youtube.com/watch?v=XIVom59Kq2U

Имеется главная страница и 2 региона.
При изменении в одном регионе, другой должен обновляться.


Шаг1. Поля привязываются к бину. Значение полей также задаются в бине.

Шаг2. Создается на странице на поле LastName LastNameChangeEvent с помощью Property Inspector.
В contextual Events появился LastNameChangeEvent.

Шаг3. Создается класс MyEventConsumer.


import javax.faces.context.FacesContext;

import oracle.adf.model.binding.DCBindingContainerValueChangeEvent;
import oracle.adf.view.rich.context.AdfFacesContext;


    public void handleEvent(DCBindingContainerValueChangeEvent payload){

        Получает созданный ранее бин.

        String newValue = (String) payload.getNewValue();

        Устанавливает новое значение для поля из бина.

        Обновление поля.

    }

Шаг4. По созданному классу правой кнопкой мыши --> Create Data Control


Шаг5. _________PageDef.xml

bindings --> insert inside bindings --> Generic Bindings --> methodAction

Выбирается созданный класс.


Шаг 6. На главной странице в bindings.

в структуре правой кнопкой мыши по mainPageDef --> Edit event map.

Producer:  empFormPagePageDef.LastName
Event Name:   LastNmaeChangeEvent
Consumer:  **empNamePageDef.handeEvent


Consumer Params:

Param Name: payload
Param Value: #{payLoad}



Еще пример от Френка Нимфуса:

https://www.youtube.com/watch?v=IFl-1RQm_so

https://bitbucket.org/oracle-adf/implement-contextual-events/



Примеры с которыми мне пришлось иметь дело:



Еще примеры: