当用户更改页面上的任何值(文本框/ LOV)时显示自定义弹出警告消息

时间:2012-05-12 10:38:04

标签: oracle-adf adfs2.0 adfs

当用户更改页面上的任何值(文本框/ LOV)并错误地关闭标签/取消按钮时,我需要显示自定义弹出警告消息。

我试过的选项是:

a)在应用程序中,我们使用复杂的任务流/ RegionModel来处理7种不同的场景。还要求显示自定义消息 - 因此无法使用“unsaveddatawarning”方法

http://www.oracle.com/technetwork/developer-tools/adf/unsaveddatawarning-100139.html

b)我尝试的第二个选项是拥有自定义区域控制器: CustomRegionController实现RegionController

在validateRegion(RegionContext regionContext)内部,想查找页面数据是否脏了

     AdfFacesContext.getCurrentInstance().getDirtyPageHandler().isDataDirty();

    DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    DCDataControl cDataControl = dcBindings.getDataControl();
    boolean dirtyFlag = cDataControl.isTransactionModified();

在这两种情况下它始终都是真的(似乎是由于常见的VO / View Link应用程序模块在页面加载时呈现数据时总是变脏)。

我剩下的最后一个选项是为每个元素调用valueChangeListener(textbaox,LOV,复选框)。我根本不喜欢这个选项。请建议是否有更好的方法来处理这种情况。

1 个答案:

答案 0 :(得分:0)

为什么使用值更改侦听器会出现问题?让每个输入组件在辅助bean中调用相同的VCL方法。如有必要,您可以从vcl事件对象中获取组件ID。