• EJB
    September 15, 2011

AutoSuggest behavior In ADF Using EJB

Guest Author

AutoSuggest feature somewhat expected feature, nowadays that most of the top sites have implemented this functionality. This feature makes your site as user friendly and easy to navigate in inputText feature.

AutoSuggest behavior in ADF adds a pull-down menu of suggested values to a text field. The user can either click directly on a suggestion to enter it into the field, or navigate the list using the up and down arrow keys, selecting a value using the enter key.

Lets create a Java EE Web Application with Entities based on Departments, edit the Departments.java entity and add the below code.

@NamedQuery(name = "Departments.filteredValues",
query = "select o from Departments o where o.departmentName like CONCAT(:deptName,'%')

Create a Stateless Session Bean and data control for the Stateless Session Bean. Add the below code to the session bean and expose the method in local/remote interface and generate a data control for that.

Note:- Here in the below code "em" is a EntityManager.

/** select o from Departments o where o.departmentName like CONCAT(:deptName,'%') */
public List<String> getDepartmentsFilteredValues(String deptName) {
//To store the resultset
List<String> deptNameResultset = new ArrayList<String>();
Query query = em.createNamedQuery("Departments.filteredValues").setParameter("deptName", deptName);
Vector result = (Vector)query.getResultList();
int resultSize = result.size();
for (int i = 0; i > resultSize; i++) {
Departments dept = (Departments)result.get(i);
return deptNameResultset;

In the ViewController create a file AutoSuggest.jspx page, from component palette drag and drop <af:inputText/> and in PI palette change the label to Dept Name. Add the autoSuggestBehavior tag to the inputText. Click on the autoSuggestBehavior, in  PI palette click on Edit property for Suggested Items and create a "AutoSuggest" managed bean with scope as "request" as shown in below Image.


Create new method as deptNameResultList and click ok.


In AutoSuggest.jspx page, go to binding tab and click create binding by selecting methodAction and click ok with parameter blank as shown in below image


Open AutoSuggest.java managed bean and paste the below code.

public List deptNameResultList(String paramValue) {
//Store the deptName result set
List<SelectItem> deptResultList = new ArrayList<SelectItem>();
//Filter the values using Items List
List<SelectItem> items = new ArrayList<SelectItem>();
BindingContainer bindings = getBindings();
//Execute the Method
OperationBinding operationBinding = bindings.getOperationBinding("getDepartmentsFilteredValues");
//Populate the deptName parameter
operationBinding.getParamsMap().put("deptName", paramValue);
if (operationBinding.getResult() != null) {
ArrayList result = (ArrayList)operationBinding.getResult();
int resultSize = result.size();
for (int i = 0; i < resultSize; i++) {
deptResultList.add(new SelectItem(result.get(i)));
for (SelectItem item : deptResultList) {
if (item.getLabel().startsWith(paramValue)) {
return items;
public BindingContainer getBindings() {
return BindingContext.getCurrent().getCurrentBindingsEntry();

Run AutoSuggest.jspx, Dept Name text field will be displayed. As soon as the user has typed a character, a filtered list of suggested values is presented( for ex: C), Now traverse the list by using up and down arrow and select a suggested value from the list and thus applying that value to the inputText component.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.