当用户更改页面上的任何值(文本框/ 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,复选框)。我根本不喜欢这个选项。请建议是否有更好的方法来处理这种情况。
答案 0 :(得分:0)
为什么使用值更改侦听器会出现问题?让每个输入组件在辅助bean中调用相同的VCL方法。如有必要,您可以从vcl事件对象中获取组件ID。