- Подготовка
- Создание cтраницы
- Создаём Application Module
- Создаём Controller
- Создаём Query Region
- Проверка
Создадим страницу, на которой будут выводится данные по сотрудникам. Данные будут представлены в виде таблицы.
Подготовка
1) Создаем новый проект или открываем существующий
Создание OAF проекта в JDeveloper
2) Создаем новый View Object (VO) или используем существующий
Создание View Object (VO) – только для просмотра данных
3) Уберем из VO условие, для полного просмотра данных.
Создание cтраницы
1) Используя меню создаём новую страницу
2) Задаём имя и путь к странице
Name: xxListEmpPG
Package: xx.oracle.apps.fnd.framework.appsoracle.webui
3) Добавляем созданную страницу в проект используя Project Content
4) На свойствах главного региона region1 устанавливаем
Window Title: XX_EXAMPLE_OAP
Title: Список сотрудников
Создаём Application Module
1) Указываем имя xxListEmpAM. Название application module должно завершаться на AM
2) Переносим view которую будем использовать — xxEmpVO
3) И нажимаем Готово. Добавляем AM в проект используя Project Content.
4) Назначаем созданный AM в свойствах главного региона страницы.
Теперь мы можем использовать на странице ViewObject xxEmpVO
Создаём Controller
1) Задаём имя контроллера xxListEmpCO. Название контроллера завершается на CO.
Проверяем путь к классу — должен находиться в каталоге webui.
2) Нажимаем ok. И получаем сгенерированный класс.
3) Добавим в контроллер выполнение VO.
public void processRequest(OAPageContext pageContext, OAWebBean webBean) { super.processRequest(pageContext, webBean); // получаем Application Module xxListEmpAMImpl am = (xxListEmpAMImpl)pageContext.getApplicationModule(webBean); // Выполяем SQL запрос View Object // При заходе на страницу, сразу отобразятся данные am.getxxEmpVO1().executeQuery(); }
Создаём Query Region
Используя Query region мы можем, в случае необходимости, довольно легко добавить возможность поиска по таблице и использование панели представлений.
1) Используя панель Structure добавляем новый регион
ID: queryRN
Construction Mode: resultsBasedSearch
Include Simple Panel: false
Include Views Panel: false
Include Advanced Panel: false
Initial Panel: customized
Show Views Panel Controls: false
Мы ограничили пока все возможности query региона до простого отображения данных. После мы рассмотрим его полностью.
2) Используя wizard создадим таблицу, для просмотра данных.
3) Указываем View Object на котором строим таблицу
4) Указываем тип региона table
5) Выбираем данные для отображения
6) Указываем наименование столбцов таблицы, типы элементов. Так как мы выводим данные только на просмотр, то ставим тип элемента messageStyledText
6) Жмём Готово.
7) В свойствах таблицы, выставляем ширину 100%
Проверка
Запускаем страницу на просмотр.
Если все сделано правильно, то должна появится страница:
а если View Object сделать не только для чтения, а содержит Enitity Object, то .executeQuery() уже не помогает — при старте формы данные не отображаются.
Как заставить показывать при старте для View Object на основе Enitity Object ?
@Илдар
Наличие EO, насколько я помню, влиять не должно.
@Илдар
Давно это было…
Да, не влияет.
Там оказывается нужно было указать ControllerAM или что-то подобное для региона.
Добрый день!
Не нашел описания xxListEmpAMImpl. Может где на других страницах?
Добрый день!
Не подскажите — попытался добавить на регион xxEmpVO1 SingleSelection, настроил у него
ViewInstance xxEmpVO1
ViewAttribute empno
DataType NUMBER
при запуске завершется с ошибкой
Error Page
You have encountered an unexpected error. Please contact the System Administrator for assistance.
Если для ViewAttribute задаю текстовое поле xxEmpVO1 — оно вроде работает.
Но если выбираю строку и перехожу на другую страницу выкидывает сообщение
Row 3 EName — Attribute set for EName in view object xxEmpVO1failed
При этом в выделенной строке появляется следующая запиь
Attribute set for EName in view object xxEmpVO1 failed
Не подскажите как с этим бороться
Задачка решилась, если вдруг кому понадобится расскажу как.
Выполняя указанный пример, решил добавить к талице возможность выбора строки — установил на таблицу xxEmpVO1 региона queryRN — SingleSelection. В свойствах указал
ViewInstance xxEmpVO1
ViewAttribute empno
Запустил на выполнение — страница не открылась.
Как решилось.
Т.к. наш ViewObj создавали ReadOnly, то все поля его (Edit xxEmpVO1-Attributes-Имя поля) Updatable — Never. Выбрал поле EName, указал ему Updatable — Always.
Вернулся на xxListEmpPG.xml — QueryRN — singleSelection. В свойстве ViewAttribute поставил EName.
Все заработало в нужном режиме.
Еще один нюанс: поле EName имело тип String. Для поля empno, которое у меня имело тип Number такой номер не прошел!