Implementing custom search form in ADF programmatically (Without using af:query)

Sharing is Caring

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.

  • First, create a Fusion Web Application and create the model (EO, VO and AM) using Employees table
  • Now suppose we have to search in 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 the value of bind variable is changed, now this is the time to set the value of bind variables, so I have dragged dual vo as a form on the page, and added 2 buttons for Search and Reset
  •  To View Search Result, Employees Table is there on the page
  •  Now to get value from Form Field to the bean, I have created binding for all 4 fields in the bean
  •  Now I have created ActionListener for Search button- in this code, I have to get value from the page using component bindings and passed in Employees ViewObject’s bind variable in order to execute viewCriteria.

    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());


  • Once the value is set in bind variable, view criteria is executed and Search result will be shown in resultant table- Run your application and see
  • To reset values in table and search form, see the managed bean code of Reset button

    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);



  • Click on the reset button and page value are set to default
custom search


          Sample ADF Application Download
Cheers 🙂 Happy Learning

Related Posts

30 thoughts on “Implementing custom search form in ADF programmatically (Without using af:query)”

  1. Hi Ashish
    Thanks for tutorial but i am not able to see filtered result on click of button
    What could be the reason ?
    Please help me

  2. Smita have you applied viewCriteria in ApplicationModule ?
    Go to Application Module –> click on viewObject–> click on Edit button on top right corner–> shuttle viewCriteria to selected side
    And check again


  3. Hi Ashish, Could you please elaborate how did you create data binding? I'm new to ADF i tried following your attached sample application, but didn't understand the concept of data binding creation.

    I will be grateful if you explain that.

    Thanks a ton in advance ..Your blog is really awesome keep up writing 🙂

  4. I tried to download the sample app but got a secure connection failed error. Would you please check it out? I did fine until I got to 'Now to get value from Form Field to bean , i have created binding for all 4 fields in bean'. I need guidance on where and when to create the bean. Thanks!

  5. Hi Ashish

    I am new to ADF, using JDev12c. I dropped DualVo as a form and now creating a bean for the search button. I create a new bean and a method 'searchButton' but I don't see any bindings for the fields like your class file has. Can you point out my mistake?

  6. For now I have created the bindings manually and completed the tutorial for search button. I am using LOV and autosuggest in my 2 search fields. The autosuggest was working before adding the bean for search button but it stopped working after I added the searchButton method. Now it shows 'No results found' for any keyword. Any ideas why?

  7. Thanks Ashish
    i have some quite deferent scenario, need your help
    the dual VO has five attribute, 1 input text, 3 date, and 2 LOV (select one choice) , and the OR used in the where VC, so user can use any on the bind variables.
    the result when i clicked the search button it shows all records.
    Q: how to show records based on user inputs, and how to control the VO.executeQuery() ?

Leave a Reply

Your email address will not be published. Required fields are marked *