oracle adf - adf Jdeveloper在弹出窗口关闭时刷新父窗体



我想刷新(更新几个字段)在我的父窗体当OK按钮点击弹出对话框。但是它不会刷新字段。我还为带有Popup Id的字段设置了partialTriggers。我的Jdeveloper版本是11.1.1.7

感谢

欧麦尔Farooq

您所需要的就是通过EL将OK按钮操作(或操作侦听器)属性与托管bean上提供的方法的调用链接起来。然后,在其中,您应该刷新每个组件或只刷新保留所有组件的表单/父组件(通过将其绑定注册到ADF上下文的部分目标)。该方法应该类似于以下示例:

public String refresh() {
    AdfFacesContext.getCurrentInstance().addPartialTarget(formToRefresh);
    return null;
}
private RichPanelFormLayout installDisable; //this should be the binding to the JSF form
public void setInstallDisable(RichPanelFormLayout installDisable) {
    this.installDisable = installDisable;
}
public RichPanelFormLayout getInstallDisable() {
    return installDisable;
}

我需要看看你在代码中实现了什么,以便为你提供"最佳"的整体解决方案-因为在弹出框中有多种实现对话框的方法。然而,这里有几个选项取决于你的弹出对话框是如何编程的:

  • 对话框监听器 -如果你使用一个对话框的内置按钮,使用这个。您的jspx/jsf页面需要一个托管bean。在对话框上的托管bean上创建一个对话侦听器。下面是一个对话框监听器的例子。

    public void myDialogListener(DialogEvent dialogEvent) {
     if (dialogEvent.getOutcome().equals(DialogEvent.Outcome.yes)) {
         // do something...
     } else if (dialogEvent.getOutcome().equals(DialogEvent.Outcome.no) {
         //do something...
     }
    }
    
  • 返回监听器—如果您正在运行一个任务流作为弹出对话框,在您的按钮上,然后添加一个ReturnListener到您的页面的托管bean。当你的弹出窗口/对话框关闭时,这个会触发。

    public void myReturnListener(ReturnEvent returnEvent) {
      //do something...
    }
    
  • 否则,我会添加一个ActionListener到你的手动按钮作为德里克建议。

现在为刷新您的组件,在您的托管bean中使用此方法,我在我的项目中一直使用它:

public void refreshComponent(UIComponent comp) {
    RequestContext rContext = RequestContext.getCurrentInstance();
    rContext.addPartialTarget(comp);
}
要使用它,您需要将表单的UI组件绑定到一个托管bean。然后将UI组件的bean属性输入到方法中。

例如,下面将刷新绑定到托管bean的富输出文本:private RichOutputText myOutputText;

public void refreshMyStuff() {
    refreshComponent(myOutputText);
}
祝你过得愉快。

最新更新