在ADF中使用AutoSuggest

来源:互联网 发布:美股港股实时行情软件 编辑:程序博客网 时间:2024/05/01 16:13

在ADF中使用AutoSuggest

概述

在使用Google/Baidu的时候我们经常会注意到,在搜索框中进行文字输入的时候,经常会根据当前输入的内容自动关联出以该内容开头的相关内容,这就是AutoSuggest,在Oracle ADF 11g中可以方便地实现AutoSuggest。实现1、创建ADF Application,为Model项目创建数据库连接,基于HR Schema的Departments表创建EO/VO/AM,并将该VO实例添加到AM的Data Model中2、生成AM的实现类,增加如下代码到该类:
public List getDepartmentName() { ViewObjectImpl departments = this.getDepartmentsView1(); departments.executeQuery(); departments.reset(); List; departmentNames = new ArrayList(); while (departments.hasNext()) { String departmentName = (String)departments.next().getAttribute("DepartmentName"); departmentNames.add(departmentName); } return departmentNames; }
3、在ViewController项目中创建新页面,对页面进行适当布局,拖动af:InputText到界面4、从控件面板中选择“autoSuggestBehavior”,添加到上一步骤的af:InputText组件中,并绑定suggestItems到该BackingBean中的属性suggestedItems5、为页面生成PageDef,添加基于Departments表创建的VO实例到该PageDef文件中6、在Backingbean中编写suggestionItems()方法的代码如下:
public List suggestedItems(String string) { List selectItems = new ArrayList(); BindingContext bc = BindingContext.getCurrent(); DCBindingContainer binding = (DCBindingContainer)bc.getCurrentBindingsEntry(); OperationBinding op = binding.getOperationBinding("getDepartmentName"); op.execute();
   if (op.getErrors() != null && op.getErrors().size() > 0) {     List; departmentNames = (List)op.getResult();     for (String departmentName : departmentNames) {       if (departmentName.startsWith(string)) {         selectItems.add(new SelectItem(departmentName, departmentName));       }     }   }   return selectItems; }

7、保存并运行该应用,结果如图:
原创粉丝点击