ADF使用搜索提示
来源:互联网 发布:淘宝新店铺一天刷几单 编辑:程序博客网 时间:2024/06/03 20:44
ADF是一个用于快速开发的框架。它为我们提供了很多很方便的组件。包括接下来要做的搜索提示功能,在ADF里面只需要一个组件即可完成。 搜索提示就是在搜索的时候并不需要知道搜索条件的全部信息,系统根据你所给出的部分关键字查询出与关键字相匹配的一个或多个记录供你选择
就像这样:
下面开始步骤:
1、新建一个FunsionWebApplication
建立业务组件business component
2、双击生成的VO新建一个查询,条件如下
3、建立好查询之后双击AM 选择DataModel 将之前的查询移入AM中去
4、页面代码设计,在页面上我们拖入一个输入框,然后点击SOURCE
粘贴如下代码
看到这里用了一个valueChangeListener 这个是用来监听输入框里面的值是否改变的。binding 绑定的是一个inputValue属性,该属性就是输入框里面的值。
注意这一行代码
<af:autoSuggestBehavior suggestedItems="#{selectBean.getItems}"/>
这个标签的意思就是自动建议。就是提示框。里面的suggestedItems属性实质上是一个list,存储了符合条件的数据的集合
<af:panelGroupLayout id="pgl4" layout="horizontal"> <af:inputText label="搜索" id="it1" changed="false" valueChangeListener="#{selectBean.valueChange}" autoSubmit="true" binding="#{selectBean.inputValue}"> <af:autoSuggestBehavior suggestedItems="#{selectBean.getItems}"/> </af:inputText> <af:commandButton text="搜索" id="cb2" action="gouser"/> </af:panelGroupLayout>
5、新建一个userdetail页面,只需要将DataControl拖进去就行。
6、代码实现内部逻辑,新建一个名为SelectBean的 java文件,将其配置到taskflow的managerbean中
7、编写SelectBean代码
在selectBean里面一共有两个绑定方法以及一个绑定属性,一个是getItems 获取根据关键字得到的元素,另一个是valueChange 监听输入框的值变化情况。inputValue属性是输入框的值。
代码如下:
public class SelectBean { private RichInputText inputValue; public SelectBean() { } /** * * @param kerwords 查询时的关键字 * @param operationName 查询操作的binding的名称 * @param selectParamsName 查询条件的参数命名(根据什么查询,查询参数名一致) * @param iterName 页面上迭代器的名称 * @param resultParamsName 查询出来的结果的参数名(VO属性名一致) * @param showParamsName 列表中需要展示的参数名称(VO属性名一致) * @return 返回一个SelectItem集合 */ public List<SelectItem> getSelectItems(String kerwords, String operationName, String[] selectParamsName, String iterName, String[] resultParamsName, String[] showParamsName) { //根据operationName获得绑定 OperationBinding selectoperation = Tools.findJUFormOperation(operationName); for (int i = 0; i < selectParamsName.length; i++) //根据关键字查询每一个条件参数,有一个满足条件即可 selectoperation.getParamsMap().put(selectParamsName[i], kerwords); //执行方法 selectoperation.execute(); //查询完成后会将结果存到一个迭代器中,所以接下来要找出这个迭代器并遍历它 DCIteratorBinding dcb = Tools.findDCIterator(iterName); //定义一个集合用来存储迭代结果 List<SelectItem> SelectItems = new ArrayList<SelectItem>(); //便利迭代器 for (Row row : dcb.getAllRowsInRange()) { //遍历的时候我们根据两个参数名称来取,一个是带有id的一个是不带有id的。带有ID的我们称之为value,不带有id的我们叫name String value = ""; String name = ""; for (int i = 0; i < resultParamsName.length; i++) { value = value + (i == 1 ? " " : "") + row.getAttribute(resultParamsName[i]).toString(); } for (int i = 0; i < showParamsName.length; i++) { name = name + row.getAttribute(showParamsName[i]).toString(); } SelectItems.add(new SelectItem(value, name)); } return SelectItems; } public void valueChange(ValueChangeEvent valueChangeEvent) { //获取改变后最新的值 String value = valueChangeEvent.getNewValue().toString(); if(value!=null){ String[] valueArray = value.split(" "); if(valueArray.length>1){ try{ Integer id =Integer.parseInt(valueArray[0]); OperationBinding ob = Tools.findJUFormOperation("ExecuteWithParams"); ob.getParamsMap().put("id", id); ob.execute(); if(Tools.findDCIterator("UserMain1Iterator").getEstimatedRowCount()==1){ //将值设置进输入框 ((RichInputText)valueChangeEvent.getComponent()).setValue(value.substring(value.split(" ")[0].length()+1, value.length())); //将输入框添加到AdfFacesContext AdfFacesContext.getCurrentInstance().addPartialTarget(getInputValue()); } }catch(NumberFormatException e){ e.printStackTrace(); } } } } public void setInputValue(RichInputText inputValue) { this.inputValue = inputValue; } public RichInputText getInputValue() { return inputValue; } public List<SelectItem> getItems(String kerword) { // Add event code here... return getSelectItems(kerword, "ExecuteWithParams", new String[] { "name" }, "UserMain1Iterator", new String[] { "UserId", "UserName" }, new String[] { "UserName" }); }}
8、页面定义配置
接下来就是页面配置
右键搜索页面->Go To Page Definition
添加一个binding 选择action并且按下图进行选择。
到这里就基本上完成了
另附Tools.java下载地址http://download.csdn.net/download/youzi1394046585/9999790
- ADF使用搜索提示
- AutoCompleteTextView使用,搜索提示
- 使用自动提示行为的ADF表单自动填充
- 搜索提示 SuggestFramework的使用
- 关于Oracle ADF 11g实现自动提示(客户端和服务端监听的使用)(一)
- ADF中使用Sequence
- ADF中使用Popup
- ADF中使用Popup
- ADF中使用Popup
- ADF中使用JavaScript
- ADF中使用Sequence
- 使用 ADF Skin
- 仿google搜索提示SuggestFramework的使用
- 仿google搜索提示 SuggestFramework的使用
- 使用mongodb实现前缀搜索提示功能
- 使用easyui-combogrid自动搜索提示
- 搜索结果仿google搜索提示SuggestFramework的使用
- 搜索提示
- 完美解决viewpager跟其他类型的listview 或 gridview一起使用时,滑动冲突问题
- java 堆内存划分
- 解决IE下JS的new Date('yyyy-MM-dd HH:mm:ss')的值为NaN-NaN的问题
- gogland跨平台编译
- java线程池练习
- ADF使用搜索提示
- Android Target/Minimum/Compile
- Java-Collection源码分析(十)——hashTable
- 【BigHereo 15】-----Arquillian Junit && javaEE单元测试实践
- 自定义View向右滑动解锁
- 企业网站要不要写原创文章,您怎么看?
- 表单
- FreeRTOS入门学习记录1——任务管理
- 大数据中简化数据的几种方式