在运行时在UIComponent中添加一个DeclarativeComponent。 Oracle JDeveloper 12c

问题描述 投票:0回答:1

我已经在这个项目中工作了大约一个星期,但没有找到解决我问题的方法。为了进行测试,我创建了一个简单的新DeclarativeComponent,它是一个panelGroupLayout,其中包含2个OutputText。之后,我部署jar文件并将其添加到其他Fusion Web应用程序库中。我想在运行时通过在JavaBean中包含下一个代码的按钮添加此DeclarativeComponent到另一个UIComponent中:

`public void addComponent(ActionEvent actionEvent) 
{
    // Add event code here...
    createOutputComponent();
}

private void createOutputComponent()
{
    CuadroDeTextoComponent ui = new CuadroDeTextoComponent(); //This is my Declarative Component
    UIComponent parentUIComponent = getPglComponente(); This is the panelGrouopLayout in which i want to add my declarativeComponent
    addComponent(parentUIComponent, ui);
}

public void addComponent(UIComponent parentUIComponent, UIXDeclarativeComponent  childUIComponent)
{   
    parentUIComponent.getChildren().add(childUIComponent);
    AdfFacesContext.getCurrentInstance().addPartialTarget(parentUIComponent);

}`

我尝试拖动声明性组件,但它可以工作,但是当我动态执行该组件时,它不会显示

javabeans oracle12c oracle-adf
1个回答
0
投票

要显示您的组件,您可能需要在其父元素中添加PPR刷新:

根据您的情况:

public void addComponent(ActionEvent actionEvent) 
{
    // Add event code here...
    createOutputComponent();
}

private void createOutputComponent()
{
    CuadroDeTextoComponent ui = new CuadroDeTextoComponent(); //This is my Declarative Component
    UIComponent parentUIComponent = getPglComponente(); This is the panelGrouopLayout in which i want to add my declarativeComponent
    addComponent(parentUIComponent, ui);    
    addPPR(parentUIComponent); //Refresh the parent component
}

public void addComponent(UIComponent parentUIComponent, UIXDeclarativeComponent  childUIComponent)
{   
    parentUIComponent.getChildren().add(childUIComponent);
    AdfFacesContext.getCurrentInstance().addPartialTarget(parentUIComponent);

}

public static void addPPR(UIComponent component) {
    if (component != null) {
        AdfFacesContext.getCurrentInstance().addPartialTarget(component);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.