需求:在实际应用中, lov(list of value)中显示的数据往往会根据页面上的某些值进行过滤,此时,可以应用 lauchpopuplistener 来实现该功能。
实现:1、基于Employees表和Jobs表创建EO/VO/AM,并设置Employees对应的VO中的JobId使用Jobs对应的VO作为数据源。
2
、在
Jobs
表对应的
VO
上添加绑定变量,并修改
SQL
语句,将该绑定变量应用到
SQL
语句中,具体代码如下:(同时需要在binds Variables中设置新创建的变量ls)

3
、为
Employees
对应的
VO
创建页面,并同时生成其
backingbean
,设置
JobId
属性中的
LaunchPopupListener
为刚创建成功的
backingbean
中的方法,这里为
filterlov()
。

4
、在
backingbean
中的
filterlov()
方法中添加代码,完成数据过滤,具体代码如下:
BindingContext bctx=BindingContext.getCurrent();
BindingContainer bindings = bctx.getCurrentBindingsEntry();
FacesCtrlLOVBinding lov = null;
lov = (FacesCtrlLOVBinding)bindings.get("JobId");
lov.getListIterBinding().getViewObject().setNamedWhereClauseParam("ls", 400);
BindingContainer bindings = bctx.getCurrentBindingsEntry();
FacesCtrlLOVBinding lov = null;
lov = (FacesCtrlLOVBinding)bindings.get("JobId");
lov.getListIterBinding().getViewObject().setNamedWhereClauseParam("ls", 400);
import的相关包如下:

5
、保存以上设置,运行页面进行测试。
最终运行结果,完成了对于
MIN_SALARY
大于8
000
的
JobId
的过滤:
