1. 同样的方法,写到AM的实现类里与写到ManageBean里面在调用的时候效果就不一样,还不知道具体原因。比如下面代码,
ViewObject vo = am.findViewObject("View1");
ViewCriteria vc = vo.createViewCriteria();
ViewCriteriaRow vcr = vc.createViewCriteriaRow();
vcr.setAttribute("ID", "123");
vc.add(vcr);
vo.applyViewCriteria(vc);
vo.executeQuery();
if (vo.getEstimatedRowCount() == 1) {
vo.setCurrentRow(vo.first());
}
当写到AM的实现类里时(通过AMClient Interface暴露给DataControl),调用后,当应用跳转到下一个页面(如显示View1的内容)时,页面的确显示的是View1的currentRow的内容;然而如果上面代码放到ManageBean中,则调用后应用跳转到下一个页面时,页面并没有显示选中的currentRow,而很奇怪的,显示的是View1正常结果集里面的第一条数据。
2.注意在调用如上的方法后,一定要在最后加上下面一句,否则会对后面的vo query产生影响,切记切记!
vo.applyViewCriteria(null);
Debug经验:关键code一定要一步一步的debug,不要想当然,比如下面这段code, vo.executeQuery()怎么知道返回的就是DafQAVerifyView表中全部的记录?!万一前面有个家伙没有做把ViewCriteria清空怎么办?!
DafQAVerifyViewImpl vo = (DafQAVerifyViewImpl)findViewObject("DafQAVerifyView1");
vo.executeQuery();
vo.findAndSetCurrentRowByKey(qaVerifyRow.getKey(), 0);