NCV65开发成长记1

环境:UAP Studio V65开发+NCHome6.5
语言:Java
开发第一个月遇到的各种问题,全实战,所有问题亲身经历。谨以此献给奋斗中的小鲜肉。
1、元数据设计时,要填写扩展标签smart(且必须为全小写)才能生成元数据动态属性的java代码字段。(2016/3/18)
堵塞:半天
解决:元数据文件设置“扩展标签”为smart(一定全小写)
过程:没人说扩展标识smart是做什么用的,凭借以前经验觉得好像做这个的,跟同事确认也没有明确答案,看了看同类元数据,来回试了试开始用的大写始终不管用,后来对比发现改成小写就行了。
2、功能节点默认模板,分配模板时节点标识字段不能填写值,否则无法加载默认模板。(2016/3/18)
堵塞:大半天
解决:默认模板分配时,节点标识保持系统默认值,什么也别写。
过程:看见节点标识字段根据个人习惯觉得应该要填写个值,于是写上”default”,打开节点时单据模板没问题,但是查询模板始终加载不错来,看debug信息提示“当前登录用户没有分配查询模板”,于是一直以为是不是要特别分配模板给这个用户,但是在集团模板、业务单元模板分配后,发现还是一样的问题。于是就跟踪了sql语句,发现了查询过程中使用的条件节点标识列用”~”作为条件,顿时无语。
3、新增按钮无法打开卡片态界面报“未知错误”(2016/3/18)
原因:AddHandler事件配置项注释掉了,加载界面时必须用它,因此加上就好了。同时卡片态没有问题,其它几个表体表尾handler也需加上。
解决:添加handler,即便实现方法啥也没写.
4、修改了billFormEditor后,context is not defined错误(2016/3/18)
原因:因为billFormEditor属性名配置错误,没有加载成功导致。
解决:打开billFormEditor的Java类看看属性名复制过来。
5、快速查询区没有值(2016/3/18)
解决:在查询模板中勾选默认显示
6、添加自定义按钮导致界面无法加载工具栏
原因:自定义按钮有问题
解决:自定义按钮要集成NCAction,同时要实现doAction(),isActionEnable(),getModel()三个方法。
7、查询时报错java.lang.reflect.InvocationTargetException SecurityConfiguration
描述:
报错位:ESAPI.encoder().encodeForSQL(UAPESAPI.NC_DB_CODEC, inputString);
错误提示:java.lang.reflect.InvocationTargetException SecurityConfiguration class (org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.
解决方案:加入vm参数jre“-Dorg.owasp.esapi.resources=${FIELD_NC_HOME}/ierp/bin/esapi”
具体位置:eclipse->references->installed jre->选中运行jre编辑vm

8、点击自定义按钮(发布按钮)没有数据
答:
BizObjPublishBP中增加代码
for (AggBizObjVO vo : vos) {
vo.getParentVO().setStatus(VOStatus.UPDATED);
}
当前界面发布后没有数据,是因为BizObjMaintainImpl.publish方法中
retBills=transTool.getBillForToClient(retBills);
这个方法将数据过滤了,因此需要设置状态updated以免被过滤。
9、做编码字段编辑态不可改,新增态可改。
答:在EditAction中重载doAction方法中加入如下代码
BillItem txtCode = cardPanel.getHeadItem(CODE);(获取字段控件)
txtCode.setEdit(true);(设置编辑态可见,这个不影响控件可编辑性。这名字容易误导,被它还惨了。)
txtCode.setEnabled(false);(设置可编辑,是否可编辑要设置这个。)
10、如何开发自定义参照,为什么元数据引用时出不来参照名。
答:
1)自定义一个RefModel继承自AbstractRefModel。
2)手动在bd_refinfo中插入一条数据refclass对应自定义的refmodel全路径。
3)在refmodel的vo元数据bmf参照中设置参照。(一般文档里都不说这一步,导致元数据引用时出不来参照。)
4)其他元数据ref时就可以出来来参照了。
10、元数据类访问类型用“AggVO”还是“POJO”还是其他的
答:建议AggVO,因为前后台有很多工具都是针对AggVO的,比如差异VO,还有一些校验工具,用其他的得自己写。
11、元数据设置了扩展标识“URC”为什么编码唯一性校验不管用。
答:光设置“URC”不行,得有以下几步:
1)元数据类扩展标识、字段扩展标识都设置“URC”
2)发布元数据后设置管理员身份登录Home到“基本档案管控模式注册”
3)到“基础数据管控模式”添加唯一性规则
4)后台代码调用BDUniqueRuleValidate执行验证,可以用ValidationFrameworkUtil创建多个服务。
12、如何在自己界面上选择数据源?
答:参照riaorg下面的“数据源”
13、更新档案状态并新建实体表,发现建表出错档案却更新成功了,事务没有回滚。
答:Session或者Dao执行时,抛出了异常,但却没有导致事务回滚。后来改用了DDLExecutorUtil.ddlExecute执行能正常回滚事务。至于为什么,还不知道?
14、异常消息被自动清除了
答:SinglePublishAction.showFailedInfo方法中的ShowStatusBarMsgUtil.showErrorMsgWithClear自动清理了消息。
15、如何开发弹出对话框
16、spring注入时对boolean属性要特别注意,其property name不能带is。
答:字段protected boolean isShowBottomPanel ,对应的set方法为setShowBottomPanel(boolean isShowBottomPanel)注入spring时不能<property name=”isShowBottomPanel” value=”true”/> 而应该写成<property name=”ShowBottomPanel” value=”true”/>