概述
在实际应用中,lov(list of value)中显示的数据往往会根据页面上的某些值进行过滤,此时,可以应用lauchpopuplistener来实现该功能。
实现
1、基于Employees表和Jobs表创建EO/VO/AM,并设置Employees对应的VO中的JobId使用Jobs对应的VO作为数据源。
2、在Jobs表对应的VO上添加绑定变量,并修改SQL语句,将该绑定变量应用到SQL语句中,具体代码如下:
SELECT Jobs.JOB_ID, Jobs.JOB_TITLE, Jobs.MIN_SALARY, Jobs.MAX_SALARY FROM JOBS Jobs WHERE Jobs.MIN_SALARY>:ls |
3、为Employees对应的VO创建页面,并同时生成其backingbean,设置JobId属性中的LaunchPopupListener为刚创建成功的backingbean中的方法,这里为filterlov()。
4、在backingbean中的filterlov()方法中添加代码,完成数据过滤,具体代码如下:
public void filterlov(LaunchPopupEvent launchPopupEvent) { BindingContext bctx = BindingContext.getCurrent(); BindingContainer bindings = bctx.getCurrentBindingsEntry(); FacesCtrlLOVBinding lov = (FacesCtrlLOVBinding)bindings.get("JobId"); lov.getListIterBinding().getViewObject().setNamedWhereClauseParam("ls", 400 } |
5、保存以上设置,运行页面进行测试。
最终运行结果,完成了对于MIN_SALARY大于4000的JobId的过滤:
相关代码:howtofilterlov
1 评论:
your blog is very fine......
发表评论