В Oracle ADF существует возможность создания критериев для сформированных нами ViewObject-ов, чтобы при необходимости выполнять запросы к базе по определенным полям. В этой статье будет описано создание этих критериев и вызов их с Java кода.Для этого в приложение созданное в прошлой статье " Использование af:iteraror вместо af:table в JDeveloper " добавим два критерия : Фильтр сотрудников по номеру отдел и фильтр по дате рождения. Приступим.
Зайдите во VO EmpView и перейдите во вкладку Query. Там находится три секции:
- Query - в ней находится запрос по которому формируется VO
- Bind Variables - в эту секцию добавляются параметры которые будут использоваться в критериях
- View Criteria -секция в которой создаются критерии.
Создайте 2 View Criteria как показано на картинках ниже:
EmpViewCriteria (где DeptNo равно параметру deptVal с типом Integer)
EmpViewCriteria1 (где Hiredate больше или равно параметру dateVal с типом Date)
Мы создали критерии, теперь нужно создать методы для их вызова.Для этого во VO EmpView зайдите в раздел Java и сгенерируйте VO класс
Далее добавьте туда следующий код в появившийся файл EmpViewImpl :
public void DeptNoViewCriteria(Integer deptNo) {
ensureVariableManager().setVariableValue("deptVal", deptNo);
ViewCriteria vc = getViewCriteria("EmpViewCriteria");
vc.resetCriteria();
applyViewCriteria(vc);
executeQuery();
}
public void DateViewCriteria(Date dateV) {
ensureVariableManager().setVariableValue("dateVal", dateV);
ViewCriteria vc = getViewCriteria("EmpViewCriteria1");
vc.resetCriteria();
applyViewCriteria(vc);
executeQuery();
}
Этот код создает два метода которые вызывают критерии с необходимыми нам входящими параметрами. Теперь что бы эти методы были доступны в Managed Beans необходимо создать для них Client Interface.Это делается в разделе Java во VO EmpView как указано на рисунке:
После этого автоматически сгенерируются два файла EmpView.java (интерфейс методов)и EmpViewClient(для вызова метода в beans).java
Если раскрыть EmpView1 в DataControls, то можно увидеть созданные нами методы.
Теперь нам осталось добавить методы в Bindings и вызвать их. Для этого перейдите на jspx страницу созданную в прошлой статье, перейдите во вкладку Bindings и добавьте наши методы:
Вернитесь на вкладку Design и создайте два CommandButton, один InputText и один InputDate. Для InputText и InputDate создайте биндинги(например deptNob и dateB)
В обработку событий нажатия кнопок добавьте следующий код:
public void filterDeptAction(ActionEvent actionEvent) {
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
OperationBinding applyFilter =bindings.getOperationBinding("DeptNoViewCriteria");
applyFilter.getParamsMap().put("deptNo",Integer.parseInt((String)deptNob.getValue()));
applyFilter.execute();
}
public void filterDateAction(ActionEvent actionEvent) {
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
OperationBinding applyFilter =bindings.getOperationBinding("DateViewCriteria");
applyFilter.getParamsMap().put("dateV", dateB.getValue());
applyFilter.execute();
}
Готово : )
Комментариев нет:
Отправить комментарий