如果另一个是可更新的,则禁用该表单

时间:2015-01-30 09:43:54

标签: forms fragment jdeveloper

我使用页面片段创建视图,在同一页面中我有两种表单来查看/更新特定信息。

我想知道是否可以根据对方是否处于可更新模式禁用一个表单(或按钮,因为它是我从可读方式更改为可更新方式的方式)。 / p>

简化我有形式A和B,两者都在可读的同一页面中。当我选择A进行更新时,我希望B禁用编辑选项,直到A返回到读取模式,并且与B形式相同。

任何人都可以帮助我吗?

---更新

一个 Flow for simple customer data

Flow for detail customer data

在每个片段(视图)中,我有一个按钮,作为片段的动作(编辑)

我需要的是在按下A按钮时禁用B.view中的按钮,反之亦然

1 个答案:

答案 0 :(得分:0)

如果表单是单独任务流的一部分,并且这些任务流在页面上用作区域,那么您将需要启用区域间通信,以便一个区域中的操作可以影响其他区域的数据和行为:

http://www.oracle.com/technetwork/developer-tools/adf/adfregioninteraction-155145.html

对于您的用例,上下文事件可以达到目的:

http://rohanwalia.blogspot.com/2013/07/contextual-events-basic-step-by-step.html http://www.awasthiashish.com/2013/05/using-contextual-event-in-oracle-adf.html https://blogs.oracle.com/raghuyadav/entry/refresh_bounded_taskflows_acro

要实施您的案例,请按照上面提供的教程进行以下更改:

在事件的customPayLoad中传递一个布尔值

<event name="DisableButtonEvent" customPayLoad="${'true'}"/>

在事件处理程序方法中,将payLoad值分配给范围变量:

  public void handleDisableButtonEvent(String payLoad) {
         AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
         Map pageFlowScope = adfFacesContext.getPageFlowScope();
         pageFlowScope.put("disableButton", payLoad);         
     }

将范围变量用于第二个区域上按钮的禁用属性

  <af:commandButton text="EditButoonB" id="cb1"
                    disabled="#{pageFlowScope.disableButton ne null? pageFlowScope.disableButton : false}"/>