EAS-BOS开发问题与解决(5)

2019-08-30 20:43

result.add((KDTreeNode) bulitTree(tn)); } else {

result.add(new KDTreeNode(((DefaultKingdeeTreeNode) tn).getUserObject())); } }

return result; }

用户没有分配到某个操作的权限,但是却可以直接操作,权限设置无效。

解决:

权限项设置要与按钮的Action直接关联。会出现上面的问题是因为(举例说明) Action A调用了Action B,然后在写引用属性的时候直接把方法B给写上了,没有用Action A,然后就出现了那个问题。Action B不是按钮的直接触发Action。要直接写上按钮的Action。

如何加监听?

解决: 示例代码

this.tblMain.addKDTSelectListener(new

com.kingdee.bos.ctrl.kdf.table.event.KDTSelectListener() { public void

tableSelectChanged(com.kingdee.bos.ctrl.kdf.table.event.KDTSelectEvent e) { try {

tblMain_tableSelectChanged(e); } catch (Exception exc) { handUIException(exc); } finally { } } });

触发监听事件是在KDTSelectManager类中的fireTableSelectChanged方法,可以看到一共触发了多少个监听器。

2008-12-18 问题:

工作流无法跑通

分析:

跟踪了代码发现在WfBizEventListener类中executeAfter方法里面的代码 String boId =

EventUtils.getBoPK(eventInfo.getEventMethods().get(operationPK.toString()), args);

取得的boId为空,使工作流无法走通。

解决:

这是BOS工作流的一个bug,需要在实体里面上设置

这里的业务对象主键的id为空。在属性上找到对应方法reqSubmit下面的isBOPK属性置为true。

如何在消息中心可以批量处理单据?

解决:

在对应的实体对象中需要设置一下扩展属性ListUI,将对应的ListUI配置进去。

2008-12-19 问题:

工作流批量处理报错

java.lang.NullPointerException: null at:

com.kingdee.eas.base.multiapprove.client.MultiApproveListUI.onLoad(MultiApproveListUI.java:299)

分析:

跟踪代码,发现

String fstBoId = ((AssignmentInfo) approveAssignInfos.get(0)).getBizObjectIds(); 这里的fstBoId为空,导致空指针错误。

解决:

没有在工作流环境中的提交节点进行配置,没有正确生成单据。 正确配置如下:

进行设置后,将会在提交到工作流的时候正确生成单据。只有在工作流环境中重新正确配置提交节点的任务之后才会生效,对之前错误的单据没有影响,需要重新进行操作流程 新增-〉提交,新的单据不会报错。

2008-12-19 问题:

重新定义了实体事件,在工作流环境中无法找到。

分析:

已经打上补丁并且生成了子系统树,但是还是无法在工作流环境中找到。

解决:

需要将工作流环境重启,即使重新连接登陆都不能够刷新的,只有将环境重启了才行。(郁

闷)

2008-12-20 问题:

如何判断该单据已经处在工作流中。

解决:

在Context中有这个属性。用这个判断this.getUIContext().get(\。

2008-12-21 问题:

消息中心打回修改重新提交的时候报“已在工作流处理中,当前任务或执行人不匹配”

解决:

一般是实体或者功能配置错误,查看对应的处理事件。

这个错误是因为在参数与映射中对应的事件参数没有设置进去。修改后即可。

如何获得所需的对象?包括过滤,获取指定的某些关联对象。

解决:

一个对象里面可能有些属性关联到其他的对象,可以通过以下写法获得。(注释文字为自己理解,并非标准)

EntityViewInfo viewInfo = new EntityViewInfo();//建立一个实体封装对象。 FilterInfo fi = new FilterInfo();//建立一个过滤对象。

fi.getFilterItems().add(new FilterItemInfo(\

//设置过滤条件为contractId这个字段的值等于contractIds。 viewInfo.setFilter(fi);

SelectorItemCollection sic = new SelectorItemCollection(); //建立一个选择器。

sic.add(new SelectorItemInfo(\实体本身的所有属性。 sic.add(new SelectorItemInfo(\为对应实体的属性,意思是获得关联对象entrys的所有属性。

sic.add(new SelectorItemInfo(\为entrys的属性。

viewInfo.setSelector(sic); payRequestBillCols =

PayRequestBillFactory.getRemoteInstance().getPayRequestBillCollection(viewInfo)

备注:

BudgetInfo info = budget.getBudgetInfo(arrayPK[i]);

SelectorItemCollection sic = new SelectorItemCollection(); sic.add(new SelectorItemInfo(\

sic.add(new SelectorItemInfo(\

sic.add(new SelectorItemInfo(\ sic.add(new SelectorItemInfo(\

BudgetInfo info2=budget.getBudgetInfo(arrayPK[i],sic); Info与info2的不同之处在于,info会拿出所有关联的对象,而info2只会拿出所指定的某些关联对象。

2008-12-30

问题:鼠标右键没有选项,添加导入导出等选项。

解决:

关键在于onShow方法。在重写onShow方法的时候要super一下。还有就是右键按钮的加载在于CoreUI类的initUserConfig方法,会初始化表格设置。而这个方法只在onShow方法中调用。

备注:

如果要自己添加导入导出选项的时候,需要做以下操作。enableExportExcel(kdtPaymentDetail); checkTableCommonMenu(kdtPaymentDetail);

这两句代码是设置导入导出功能是否要实现,并且检查右键的有效性。 kdtPaymentDetail则为KDTable。

其实还有另外一个实现方法,就是在页面上重写getTableForCommon(),返回一个KDTable就行了。


EAS-BOS开发问题与解决(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工作手机使用管理办法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: