我对Adf很新,我被困在一个有2个VO的地方,即VO1和Vo2。我制作了一个瞬态变量“TranVar”,并将VO2的VO1中的存取器视为VA1。 在瞬态变量“TranVar”的访问器中,我以编程方式访问View Accessor VA1,因为VA1可能会产生多行,但是,我需要在该瞬态变量中发送一个值。 在瞬态变量的访问器中编写的代码是: -
String flag = "false";
RowSetIterator rowSet = getVA1().createRowSetIterator(null);
Row row = null;
System.out.println("count-" + rowSet.getRowCount());
while (rowSet.hasNext()) {
if (row.getAttribute("IncludeFile").equals("true")) {
flag = "true";
}
}
return flag;
我的问题是rowSet.getRowCount()返回null,这意味着它不会在循环中进入,因为它们没有行。但是,我写的查询是真的,并在sql工作表中执行时返回值。 输出总是假的。
请帮助,问题如果看起来有点混乱,请提供输入以便我可以返回。
答案 0 :(得分:1)
如果您的视图访问者类型为many=True
,您将直接从访问者获取RowSetIterator
。
否则,如果您的访问者类型为<something> to *
,那么您将拥有{{1}直接作为结果。
我假设此代码驻留在ViewObjectRowImpl或EntityImpl类型类中:
<something> to 1
答案 1 :(得分:0)
与Java开发人员一样,反直觉,ADF中的访问器不是为从其他视图对象中引用视图对象而设计的。 访问器在内部由不同的视图对象实例表示,而不是您在AM中公开的实例。
出于您的目的,您需要通过应用程序模块获取视图对象实例的引用:
getApplicationModule.getVO1()
另一件事:小心使用getRowCount(),特别是在大型数据集上。 getRowCount() does the counting in JVM memory,因此它会首先获取所有行。