需求:在实际应用中, 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大于8000 的JobId的过滤:
