При помощи drag-n-drop технологий в JDeveloper можно с легкостью создать приложение, которое будет отображать и редактировать Master-detail связи,списки,графики. Но часто для реализации необходимых требований приложения требуется программное управление компонентами и выполнение определенных Java методов. Для этого в ADF существуют конфигурационные файлы называемые "Bean"(Бины). Бины представляют из себя Java классы со своей областью жизни(scope) экземпляров методов и переменных.
Области жизни Managed bean-ов бывают следующих видов:
- Application scope - экземпляр bean-a существует на протяжении работы приложения;
- Session scope - экземпляр bean-a создается один раз при обращении пользователя к приложению, и используется на протяжении жизни сессии;
- Page flow scope - эта область используется для взаимосвязи между страниц в TaskFlow и существует ;
- Request scope - экземпляр bean-a создается на каждый запрос до тех пор пока не отправится обратно клиенту;
- Backing bean scope - это область используется для декларативных компонентов и page fragment(region) и существует так же как и request scope ;
- View scope - экземпляр bean-a создается один раз при обращении к странице, и используется ровно столько, сколько пользователь находится на странице (включая ajax запросы).
Для демонстрации работы bean-ов создадим простое приложение которое в OutputText напишет значения выбранной строки в таблице.
Использовать будем как обычно схему Scott.
1. Создайте Entity Object Dept,View Object DeptView и добавьте DeptView в Application Module;
2. Cоздайте страницу MyBeans.jspx;
3. Добавьте на страницу panelStretchLayout;
4. Добавьте из Data control DeptView на страницу и создайте read-only таблицу (Row Selection: Single row) в фасетку center компонента panelStretchLayout;
5. Добавьте OutputText в фасетку top и установите значение value="";
6. Добавьте PanelGroupLayout в фасетку start;
7. Добавьте Button в PanelGroupLayout и назовите ее "Выполнить"
Подготовительный этап готов
Теперь собственно перейдем к созданию manage bean-a. Для этого нажмите два раза по кнопке "Выполнить".Появится окно "Bind Action Property" в котором в "Managed Bean" нажмите "New". Этим вы вызовите окно создания Managed Bean-a. Введите данные, такие же как на следующей картинке
Созданные нами bean-ы отображаются в adfc-config.xml во вкладке "Managed Beans"public String SetOt() {// Add event code here...return null;}
Теперь нам надо связать наш Output text на странице с переменной в нашем bean-e, для этого вернитесь на страницу MyBeans.jspx и найдите созданный нам Output text и измените свойство как показано на картинке ниже(Property name:ot1)
В MyBean.javа создастся переменная private RichOutputText ot1; и сформируются get и set методы :public void setOt1(RichOutputText ot1) {
this.ot1 = ot1;
}
public RichOutputText getOt1() {
return ot1;
}
Итак, в нашем MyBean.javа есть метод для обработки события при нажатии на кнопку и методы для работы с нашим Output text. Осталось в обработке события обратиться к нашей таблице что бы взять данные из выбранной строки. Для этого в метод setOt перед "returned null;" введите следующий код:
//Получаем bindings, связанные с текущей scope, а затем получаем доступ к итератору с которым связана наша таблица : DeptView1Iterator
DCBindingContainer bindings =
(DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding dcItteratorBindings =
bindings.findIteratorBinding("DeptView1Iterator");
// Получаем доступ к ViewObject нашей таблицы
ViewObject voTableData = dcItteratorBindings.getViewObject();
// Получаем выбранную строку
Row rowSelected = voTableData.getCurrentRow();
// Устанавливаем значение Value компонента Outputtext
ot1.setValue("Вы выбрали отдел : "+rowSelected.getAttribute("Dname")+" который находится в "+rowSelected.getAttribute("Loc"));
setOt1(ot1);
Приложение, готово.Запускайте :)
Комментариев нет:
Отправить комментарий