您的位置:首页 > 运维架构

使用ADF-BC 实现查询功能之六:使用Popup组件实现全字段查询

2014-08-20 19:21 696 查看
开发环境:JDevloper 11.1.2.1.0+ Oracle Database 10g Express Edition 10.2.0.1。

在《使用ADF-BC
实现查询功能之一:All Queriable Attributes》中,全字段查询界面和结果是在同一个页面。

实际使用中,有些客户希望把查询界面放到popup组件中,查询完毕后,页面刷新显示查询结果。

这里我们可以使用一些小技巧,不需要很大的改动就可以实现该功能。

重要步骤说明:

1. 创建页面,添加查询按钮,点击后弹出popup组件

2. 创建popup组件

(1)在其中添加dialog组件,其中Type=none,表明不需要任何OK或Cancel按钮。

(2)在dialog组件中,拖放All Queriable Attributes生成全字段查询Panel,其内容如下:

<af:query id="qryId1" headerText="Search" disclosed="true"
value="#{bindings.ImplicitViewCriteriaQuery.queryDescriptor}"
model="#{bindings.ImplicitViewCriteriaQuery.queryModel}"
queryListener="#{bindings.ImplicitViewCriteriaQuery.processQuery}"
queryOperationListener="#{bindings.ImplicitViewCriteriaQuery.processQueryOperation}"
resultComponentId="::resId1"/>


稍后我们会做些改动。

3. 创建一个Managed Bean

(1)把table组件绑定到Managed Bean中的一个属性,这样可以在代码中操作table组件。

(2)把popup组件绑定到Managed Bean中的一个属性,这样可以在代码中操作table组件。

(3)修改queryListener,将其指向Managed Bean中的一个方法: queryListener="#{myBackingBean.queryListener}"。

queryListener方法内容如下:

public void queryListener(QueryEvent queryEvent) {
// 首先通过程序调用原有的queryListener
JSFUtils.invokeMethodExpression("#{bindings.ImplicitViewCriteriaQuery.processQuery}", Object.class,
QueryEvent.class, queryEvent);
// 隐藏popup组件
searchPopup.hide();
// 刷新table组件
AdfFacesContext.getCurrentInstance().addPartialTarget(resultTable);
}


4. 运行页面

点击Search按钮,弹出popup窗口,输入条件,回车确定。





Table将显示符合查询条件的记录。





5. 小结

使用JSFUtils.invokeMethodExpression可以在代码中调用原来绑定在组件上的Listener事件。

这是一种定制组件Listener事件的方式:在调用原有Listener方法的前后加入自己的逻辑。

Project 下载:ADF_QueryInPopup.7z
http://maping930883.blogspot.com/2010/04/adf066adf-bc-popup.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: