在Oracle ADF中处理条件对话框/弹出逻辑

时间:2015-06-23 15:37:12

标签: oracle-adf

我有一个以编程方式在支持bean方法中显示弹出窗口的页面。弹出窗口向用户询问是/否问题,随后的逻辑路径由其响应确定。但是,首先是否显示弹出窗口是有条件的。此外,必须完成弹出逻辑之外的原始方法中的其他逻辑。

这个问题是ADF似乎将弹出窗口分离到另一个线程,并在等待用户响应的同时继续同时执行原始方法中的逻辑。但是,期望的效果是程序停止,直到用户在弹出窗口中回答了问题。

我无法找到一种优雅的方式来实现这一目标。理想情况下,我认为解决方案是封装在原始方法中显示(或未显示)弹出窗口后发生的逻辑,如果显示弹出窗口,则从弹出窗口的动作侦听器调用它(否则从原始方法调用它) 。但是,要封装的逻辑需要使用在弹出窗口显示之前设置的一些局部变量。没有办法将这些值传递给弹出的动作侦听器方法,以便将它们传递给封装的逻辑(除了在bean中创建全局静态变量,这似乎是一个糟糕的解决方案)。

我的另一个想法是将“显示/不显示弹出”逻辑提升到任务流程。但是,似乎每个弹出窗口都会这样做会使任务流程变得非常复杂。

有更好的方法吗?它一定是一个普遍的问题,而且我似乎都错了。

ETA:我尝试​​将弹出窗口的ContentDelivery属性设置为“immediate”,并在弹出窗口中设置af:dialog组件,因此Modal为“true”。两者都没有产生预期的行为。

1 个答案:

答案 0 :(得分:0)

使用服务器端Web框架无法实现这一点。

对于ADF,每个生命周期都有不同的事件: 1 - 弹出打开:: popupFetchListener事件 2 - 单击确定,取消按钮:: DialogListener事件 3 - 点击Esc按钮:: popupCancelledEvent

您可以在pageFlowScope或viewScope上共享这些事件之间的数据。 但是如果使用ADF BC,最好在View Objects上使用瞬态属性。