重置af:query查询条件时清空结果Table

来源:互联网 发布:淘宝怎么加入虚拟卖家 编辑:程序博客网 时间:2024/05/18 00:13

装载自:http://oracleseeker.com/2013/09/26/adf_query_reset_button_clear_table_result/#more-3823


需求概述

在Oracle ADF开发中,上下布局的查询面板和查询结果页面是最为典型的模式之一(即形如下图的af:query和af:table布局页面)。af:query组件默认提供了搜索、重置、保存查询等常用操作,简化了开发难度,但重置功能只能实现对于查询条件的重置/清除,却无法在重置查询条件的同时将结果Table清空,如需实现该需求,则需使用客户化af:query组件的QueryOperationListener实现,在执行原重置查询条件逻辑之后,增加对于查询结果的清空,本文将对该方法进行详细描述。

Image

 
应用准备

1、应用项目准备,基于HR Schema中的Jobs表创建EO/VO,生成AM,并在AM的实现类中编写如下代码,实现对于JobsVO的空查询,完成后发布该方法为Client Interface:

/*** 执行空查询,刷新当前JobsVO的结果集*/public void executeJobsVoEmptyQuery() {this.getJobs1().executeEmptyRowSet();}

?

 

2、在JobsVO中创建子查询,作为页面布局时的查询面板查询条件:

Image(1)

 

3、创建并如图布局main.jspx页面:

Image(2)

 

实现步骤

1、将AM中暴露的JobsVO空查询方法作为MethodAction添加到main.jspx页面的PageDef中:

Image(3)

 

2、在main.jspx页面中选择af:query组件,在属性面板中找到QueryOperationListener属性,其默认值为:#{bindings.ByJobIdAndTitleVCQuery.processQueryOperation},编辑该属性,根据向导生成backingbean及对应的Listener方法:

Image(4)

 

3、打开2步骤中创建的backingbean,修改该Listener对应的方法:

public          void jobsQueryOperationListener(QueryOperationEvent queryOperationEvent) {       logger.info("queryOperationEvent.getOperation().name(): " +queryOperationEvent.getOperation().name());       //1.执行原逻辑,清空af:query组件中的查询条件       JSFUtils.resolveMethodExpression("#{bindings.ByJobIdAndTitleVCQuery.processQueryOperation}",                    Object.class,new Class[] { QueryOperationEvent.class },new Object[] { queryOperationEvent });       //2.判断是否为重置动作,如是,则继续后续步骤      if ("RESET".equals(queryOperationEvent.getOperation().name())) {             //3.调用AM中的方法,为VO执行空查询,清空VO实例的值             OperationBinding methodBinding =             ADFUtils.findOperation("executeJobsVoEmptyQuery");             methodBinding.execute();    }}

 

4、设置af:table的PartialTrigger为af:query:

Image(5)

 

5、运行该应用,查看效果

查看JobId开头为A的Jobs信息:

Image(6)

 

点击查询面板中的重置,实现对于查询条件和查询结果的更新:

Image(7)

 


0 0
原创粉丝点击