做了快5年的eas開發,遇到過的問題數不勝數,最近在幫新同事處理問題時發現好多問題是似曾相識的 ,現將這些問題及解決方法彙總下來,並不斷維護吧。
1.開發過程中往往會遇到某些欄位或表不存在的提示,而這些屬性確不是我們開發的,故不知道是那個表少屬性。
解決方案:
第一步:通過在com.kingdee.bos.sql.shell.kdpreparedstatement類裡的建構函式方法設定斷點,來抓出ksql、dialect_sql變數裡的sql語句。
第二步:將得到的語句在查詢分析器裡執行 看下 是否存在缺少的字段,並看是哪個表少的字段
2.新增乙個物業管理的模組,在建立ui基類的時候發現乙個問題,需要將序時簿中的引數通過上下文傳遞到editui中(例如:左樹右表的樹節點),實現方案如下:
重構listui的prepareuicontext()方法,給上下文傳參即可
例如:protected void prepareuicontext(uicontext uicontext, actionevent e)
注:在editui中需要在介面載入後才可獲得引數。
4.儲存過程的執行參考案例:
connection conn = this.getconnection(ctx);
//呼叫xx儲存過程
string sql="";
callablestatement cs = conn.preparecall(sql);
cs.setstring(1, projectid);
//改為根據單頭採購組織取數(問題清單2要求修改--需求人員餘潺)
cs.setstring(2, purorgunitid);
cs.registeroutparameter(3, oracle.jdbc.oracletypes.cursor);
cs.execute();
object rowset=(object) cs.getobject(3);
if(rowset instanceof oracleresultset) }
5.彈框控制邏輯:
uicontext uicontext = new uicontext();
uicontext.put("id", id);
uicontext.put("purorgunitid", purorgunitid);
string uiclass = "com.kingdee.eas.industry.emm.scm.sm.client.filepartbilldetaillistui";
iuiwindow popui = uifactory.createuifactory(uifactoryname.model).create(uiclass, uicontext, null, oprtstate.view);
popui.show();
其中,如果彈出的ui介面不需要工具欄及最大化等按鈕,用uifactoryname.model引數
目標介面中通過getuicontext().get("id") 獲取引數值
6.新增單據分錄按鈕新增框架方法,在開發乙個單據中分錄的新增行刪除行按鈕簡便處理方式:
第一步,定義變數:
protected com.kingdee.eas.framework.client.multidetail.detailpanel kdtentry_detailpanel = null;
第二部,新增detailpanel到panel容器中,並重構inituicontentlayout()方法實現具體邏輯:
public void inituicontentlayout()
7.設定大文字控制項(kdtextarea)滾動條的簡易方法,避免使用多語言的大文字控制項:
第一步:定義kdscrollpane變數
protected com.kingdee.bos.ctrl.swing.kdscrollpane scrollpanetype;
第二步:重構 inituicontentlayout() 方法並實現給大文字新增滾動pane的**
public void inituicontentlayout()
8.序時簿中獲取選中行中某單元格的值方法,例如獲取啟用狀態字段來判斷是否可修改:
//string strid =getselectedkeyvalue();
int selectrows = kdtableutil.getselectedrows(tblmain);
string strstatus =listuihelper.getselectedkeyvalue(selectrows, tblmain, "deletedstatus");
9.序時簿 單據單頭行合併,重構 getmergecolumnkeys方法
public string getmergecolumnkeys();}
11.eas中editui設定出滾動條的方法:
第一步:在editui**類中重構一下三個方法
public boolean usescrollpane()
public int getverticalscrollpolicy()
public int gethorizontalscrollpolicy()
第二部:在editui元資料中設定介面屬性:
設定coreui(panel)的preferredsize屬性的高寬等同於介面高寬
12.// 初始化預設過濾條件,true為開啟過濾框,false為預設不開啟過濾框
protected boolean initdefaultfilter() else
return true;
}13.**kdtable新增滑鼠右鍵顯示的excel匯出功能(元資料發布的預設有,但是**建立的**需要呼叫下面方法):
coreui類裡的addcommonmenustotable(table)方法
14.服務端新增單據進工作流,(介面同步場景用)
案例**如下:
wfeventlistenerstatemanager.getinstance().enableeventlistener();
projectdocbillfactory.getlocalinstance(ctx)
.submit(projectdocbillinfo);
wfeventlistenerstatemanager.getinstance().disableeventlistener();
15.根據單據id找到單據的相關資訊(實體,表,ui等)
bosuuid id = bosuuid.read(billid);
bosobjecttype type = id.gettype();
imetadataloader loader = metadataloade***ctory.getremotemetadataloader();
entityobjectinfo vo = loader.getentity(type);
string editui = vo.getextendedproperty("editui");
16.checkbox控制項值改變時,如需要改為選擇前的值方法:
if(e.getstatechange()==2)
獲取上下文中的資訊(當前登入人、當前公司等)
客戶端:syscontext.getsyscontext().getcurrentuserinfo();
服務端:contextutil.getcurrentuserinfo(ctx);
17.**中根據編碼規則獲取編碼的簡單實現
protected void recyclenumberbyorg(iobjectvalue editdata,string orgtype,string number)
else if (com.kingdee.eas.common.client.syscontext.getsyscontext().getcurrentorgunit() != null)
if (!stringutils.isempty(companyid) && icodingrulemanager.i***ist(editdata, companyid) && icodingrulemanager.isuseintermitnumber(editdata, companyid))
}catch (exception e)}}
呼叫:recyclenumberbyorg(editdata,"none",editdata.getstring("number"));
18.服務端獲取上下文:contextutil.getcurrentuserinfo(ctx);
客戶端獲取上下文:syscontext.getsyscontext().getcurrentuserinfo();
web端獲取上下文:
context ctx =wafcontext.getinstance().getcontext();
userinfo user = contextutil.getcurrentuserinfo(ctx);
專案高併發問題解決方案合集
這道題是比較典型的題吧,也是我第乙個公司入職的時候,面試官問我的,當時我回答只能說是星星之火,還不能燎原那種,差點被面試官給澆滅。1 採用快取技術 這是最簡單的乙個回答,使用者快取 頁面快取等一切快取。使用特定的機制來進行重新整理,利用消耗記憶體空間來換取使用者的效率,同時減少資料庫的訪問次數。2 ...
幾個開發小問題解決方案
需要將練嗎資料解碼之後轉化為char後在轉化為string string s urldecoder.decode platformid,utf 8 private static string revert string s 如系統非使用utf 8編碼,請替換為帶有編碼格式的建構函式 return n...
Jar Hell 問題解決方案
最近看到溫紹錦的jvm基礎,裡面看到這個jar hell問題的解決方法,之前遇到過一次,是乙個資源檔案,當時覺得挺麻煩,不知道還有這個方法,很棒,特地整理了下,記錄到這裡來,這個部落格開了好長時間了,一直以來也懶得寫東西,以後會堅持更新些。classloader classloader thread...