Implementing custom search form in ADF programmatically (Without using af:query)
Sometimes we need to implement custom search instead of using adf query component.
To implement custom search form , i have used a quite beautiful way to handle search and reset functionality for a View Object.
In this post i am taking Employees Table (Default HR Schema) to search and reset af:table.
In this post i am taking Employees Table (Default HR Schema) to search and reset af:table.
- First create a Fusion Web Application and create model (EO,VO and AM) using Employees table
- Now suppose we have to search on 4 fields (EmployeeId, FirstName, Email, Salary) , so for this i have created a new read only ViewObject from dual
- This VO from dual is created to be used as Search form on page
- Now to make search effective on Employees VO , i have created 4 bind variable for corresponding fields in Employees ViewObject
- Now i have created a ViewCriteria using these 4 bind variables to re-query ViewObject data
- This ViewCriteria will be executed each time when value of bind variable is changed, now this is the time to set value of bind variables, so i have dragged dual vo as a form on page, and added 2 button for Search and Reset
- To View Search Result , Employees Table is there on page
- Now to get value from Form Field to bean , i have created binding for all 4 fields in bean
- Now i have created ActionListener for Search button- in this code i have get value from page using component bindings and passed in Employees ViewObject's bind variable in order to execute viewCriteria.
- Once value is set in bind variable , view criteria is executed and Search result will be shown in resultant table- Run your application and see
public void searchButton(ActionEvent actionEvent) { searchAMImpl am = (searchAMImpl)resolvElDC("searchAMDataControl"); ViewObject empVo = am.getEmployees1(); empVo.setNamedWhereClauseParam("EmpIdBind", empIdPgBind.getValue()); empVo.setNamedWhereClauseParam("FirstNmBind", firstNmPgBind.getValue()); empVo.setNamedWhereClauseParam("EmailBind", emailPgBind.getValue()); empVo.setNamedWhereClauseParam("SalaryBind", salaryPgBind.getValue()); empVo.executeQuery(); }
- To reset values in table and search form, see the managed bean code of Reset button
- Click on reset button and page value are set to default
public void resetButton(ActionEvent actionEvent) { searchAMImpl am = (searchAMImpl)resolvElDC("searchAMDataControl"); ViewObject empVo = am.getEmployees1(); ViewObject attrVo=am.getattr1(); empVo.setNamedWhereClauseParam("EmpIdBind", null); empVo.setNamedWhereClauseParam("FirstNmBind", null); empVo.setNamedWhereClauseParam("EmailBind", null); empVo.setNamedWhereClauseParam("SalaryBind", null); empVo.executeQuery(); attrVo.executeQuery(); }
- This is how we can implement custom search using ADF components, you can apply validations, auto suggest feature etc while using this custom search