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