ADF:table 无法在页面中显示

ADF: table was unable to show in page

我在 .jsff 文件中定义了一个 ADF table,其中 partialTrigger 绑定到包含 class B 的组件的 ID :

    <af:table value="#{pageFlowScope.ManagedBeanName.nameList}"  
    ...        
    partialTriggers="::::it5">
    ...
    </af:table>

在 ManagedBeanName.java 中,我们定义了 nameList 并且有一个方法可以为名为 setNameList 的列表设置值。当 nameList 设置值时,它将在 UI 页面中显示 table。

public void setNameList(){
     ...
     nameList.add(name);
}

现在我有一个 Class B,我们在其中调用 setNameList

ManagedBeanName managedbean = new ManagedBeanName();
managedbean.setNameList();

通过调试过程,发现setNameList可以正确调用,nameList可以设置值。

但是调用后nameList没有值。 table 没有显示。

能否请您帮助发现问题出在哪里?

非常感谢!

您必须将数据列表放在一个范围内 尝试这样的事情:

public List<String> getMyList() {
        myList.clear();
        List<String> list = (List<String>) AdfFacesContext.getCurrentInstance().getProcessScope().get("myList");
        if (list != null) {
            for (String var : list) {
                myList.add(var);
            }
        }
        return myList;
    }

你也可以看到这个问答:

问题是我在 managedbean 中定义了 setNameList() 并且必须在 Class B 中的另一个方法中调用 setNameList()。

我新建了一个新的 managedBean 来调用这个方法,这个实例中的 nameList 不是绑定到页面的那个。

解决方法:

在class B中,获取正确的实例为:

ManagedBean managedBean = (ManagedBean)ADFUtil.evaluateEL("#{pageFlowScope.ManagedBean}");

问题解决了。