为什么ADF中的表组件在绑定到value属性的方法上多次迭代

时间:2014-01-15 14:24:16

标签: jsf oracle-adf

在我的ADF项目中,我在JSF页面上有一个表组件,其value属性绑定到Managed bean中的方法,该方法返回List类型对象。我能够在表上显示数据,但我可以看到正在执行的方法多达22次!为什么这个方法被多次调用,并且当我们通过Data控件公开它们时,业务组件也会发生同样的事情? TIA

编辑:JSPX代码:

<af:table var="row" rowBandingInterval="1"
                            autoHeightRows="10"
                            binding="#{backingBeanScope.backing_ForEachExample.t2}"
                            id="t1" partialTriggers=":::cb1"
                            styleClass="AFStretchWidth"
                            value="#{backingBeanScope.backing_ForEachExample.test2}">
                    <af:column sortable="false" headerText="col1" id="c3">
                      <af:outputText value="#{row}" id="ot2"/>
                    </af:column>
                  </af:table>

Bean方法是:

    public   List<String> gettest2(){


    /* Unique values are derived */


    List<String> tab=new ArrayList<String>();

    for(String s:uniqueValues){
        System.err.println("? Unique Value is : "+s);

              tab.add(s);      
    }     

    return tab;
    }

1 个答案:

答案 0 :(得分:0)

当您使用ADF BC时,数据显示在您通过数据控件在AM中公开的VO中,您可以指定VO调整属性,该属性确定在一次往返中从数据库中提取的记录数。这是分批命名的。您可以指定迭代器的范围大小,与一次性从数据库中提取的记录数量以及在UI中需要在表中显示的数量相同。 af:table有一个名为fetchSize的属性,如果你将这个属性设置为等于迭代器范围大小为20的某个值,并且VO>调整&gt;在= 20的批次中,它只会查询一次。默认情况下,批量生成的VO等于1,在这种情况下,如果显示autoheightrows = 20的表,则表格将从数据库中多次查询数据。