NC開發筆記——NC65+UAP65成長筆記
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”/>