中行bfw框架開(kāi)發(fā)和測(cè)試資料課件_第1頁(yè)
中行bfw框架開(kāi)發(fā)和測(cè)試資料課件_第2頁(yè)
中行bfw框架開(kāi)發(fā)和測(cè)試資料課件_第3頁(yè)
中行bfw框架開(kāi)發(fā)和測(cè)試資料課件_第4頁(yè)
中行bfw框架開(kāi)發(fā)和測(cè)試資料課件_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

BFW開(kāi)發(fā)基礎(chǔ)培訓(xùn)

2010年3月共六部分內(nèi)容:1、基于BFW的開(kāi)發(fā)流程2、技術(shù)重點(diǎn)3、中行項(xiàng)目開(kāi)發(fā)過(guò)程4、中行項(xiàng)目的測(cè)試一、基于BFW的開(kāi)發(fā)流程概述BFW(BocsoftFrameWork)是一個(gè)基于JAVA語(yǔ)言開(kāi)發(fā)的,主要目標(biāo)為企業(yè)應(yīng)用開(kāi)發(fā)中各種難點(diǎn)提供綜合全面的解決方案。(如:多渠道整合、用戶權(quán)限控制、事務(wù)處理、組件化資產(chǎn)管理于復(fù)用,第三方技術(shù)集成等)其核心思想是以IOC/DI容器為資產(chǎn)累積的平臺(tái),面對(duì)各種應(yīng)用問(wèn)題,開(kāi)發(fā)各種有針對(duì)性的組件,提供解決方案。并形成技術(shù)資產(chǎn),持續(xù)優(yōu)化與擴(kuò)充,鼓勵(lì)充分復(fù)用,以實(shí)現(xiàn)最大程度內(nèi)提高開(kāi)發(fā)生產(chǎn)力的目標(biāo)。BFW分層結(jié)構(gòu)4框架比較5核心概念開(kāi)發(fā)組織架構(gòu)7分層介紹bfw項(xiàng)目開(kāi)發(fā)展現(xiàn)層開(kāi)發(fā)服務(wù)層開(kāi)發(fā)DAO層開(kāi)發(fā)產(chǎn)品層開(kāi)發(fā)8展現(xiàn)層開(kāi)發(fā)1、展現(xiàn)層結(jié)構(gòu)1服務(wù)層(通過(guò)依賴注入,在交易配置文件中定義使用)開(kāi)發(fā)jsp頁(yè)面委托頁(yè)面查詢頁(yè)面撤銷頁(yè)面授權(quán)頁(yè)面修改頁(yè)面批量頁(yè)面復(fù)核頁(yè)面開(kāi)發(fā)Action委托Action撤銷Action授權(quán)Action復(fù)核Action修改Action批量Action查詢Action交易配置文件菜單配置文件角色權(quán)限配置格式校驗(yàn)配置多語(yǔ)言支持配置文件1、展現(xiàn)層結(jié)構(gòu)2交易配置文件:trs_***.xml菜單配置文件:menu_***_***.xml角色權(quán)限配置文件:role.xml格式校驗(yàn)配置文件:style.xml多語(yǔ)言支持:異常信息:bfw_error_**_**.properties

常量信息:constant_**_**.propertiesJSP頁(yè)面:jsp_message_**_**.properties

頁(yè)面結(jié)構(gòu):page_**_**.properties

字典消息:dictionary_**_**.properties下載文件標(biāo)題:download_titiles_**_**從交易說(shuō)起交易配置文件trs_***.xml最簡(jiǎn)單的交易<transactionid="QueryOperatorPre"template="emptytemplate"><channels> <channeltype="http"> <paramname="success">index</param> </channel></channels> </transaction>基本概念(一)交易實(shí)現(xiàn)展現(xiàn)邏輯的基本要素。主要由action、fields、channels組成action:業(yè)務(wù)邏輯片斷fields:輸入域channels:呈現(xiàn)的選擇模版:執(zhí)行流程每個(gè)交易對(duì)應(yīng)一個(gè)預(yù)先定義的模板負(fù)責(zé)交易的流程控制對(duì)于業(yè)務(wù)邏輯片斷的編程原則上都應(yīng)該定義在Template中。chain:責(zé)任鏈command:責(zé)任鏈節(jié)點(diǎn)*DelegateCommandBFW-HTTP處理時(shí)序1415BFW-HTTP核心組件MainServlet作為IOC容器加載入口。作為接入適配器,負(fù)責(zé)接收HTTP請(qǐng)求,調(diào)用控制(MainController),并將處理結(jié)果派發(fā)給視圖(View)進(jìn)行渲染。MainController完成上下文(Context)加工,負(fù)責(zé)調(diào)用BFW核心控制(CoreController),并負(fù)責(zé)異常的處理,生成視圖參數(shù),并將處理結(jié)果返回MainServlet。View接受MainServlet發(fā)送來(lái)的數(shù)據(jù),并負(fù)責(zé)數(shù)據(jù)的渲染呈現(xiàn)。BFW支持多種視圖技術(shù)download,jsp,Velocity等16配置一個(gè)BFW-HTTP交易確定交易配置根據(jù)需求分析交易需要選擇的模板確定交易使用的視圖類型,視圖地址編寫Action實(shí)現(xiàn)業(yè)務(wù)邏輯編寫視圖頁(yè)面BFW-VIEW視圖BFW的視圖定義在http.xml文件中,MainViewResolver對(duì)象下。在交易的channel屬性中應(yīng)配置視圖類型、路徑、參數(shù)視圖格式:VIEWTYPE,PATH{KEY=VALUE,…}視圖類型:URL視圖通常用來(lái)呈現(xiàn)html通過(guò)localeMode支持國(guó)際化設(shè)定Download視圖用來(lái)支持文件下載Stream視圖通常用作系統(tǒng)間通訊Servlet視圖用來(lái)調(diào)用另一個(gè)BFW-HTTP交易其他(Velocity,Dynamic….)BFW-ACTIONAction通常我們集成AbstractExecutableAction抽象類Action還有其他的接口如:Preparable,Submitable,PageLoader…,需要視選擇的模板決定?;靖拍睿ǘ﹫D示:下面具體步驟以B2B的訂單批量查詢?yōu)槔?lt;!--新建單筆委托提交--><transactionid="B2BQueryOrderMul"template="executeTemplate"><actions><refname=“act01”>orderMulQueryAct</ref></actions><fields><fieldname=“MerchantID">bpeMerchantIDStyle</field><fieldname=“OrderNum">B2BOrderNumber{option=true}</field><fieldname=“OrderStartDate">date10Style{option=true}</field><fieldname=“OrderEndDate">date10Style{option=true}</field></fields><channels><channeltype="http"><paramname="success">ent/b2b/b2bQueryOrderResult{id=0452}</param>

<paramname="success1">ent/b2b/test{id=0021}</param></channel></channels></transaction><actionid="orderMulQueryAct”

cass="com.bocnet.client.actions.ent.b2b.B2BQueryOrderMul"><refname="b2bPaymentService">B2bPaymentService</ref><refname="commonService">CommonService</ref><paramname="pageSize">5</param></action>2、定義交易配置文件1交易名稱模版名稱(不可重復(fù)提交)action名稱提交后臺(tái)的數(shù)據(jù)域格式檢查名稱Mvc中的視圖action名稱Action定義的java類注入action的依賴類頁(yè)面號(hào)如何選擇視圖頁(yè)面轉(zhuǎn)發(fā):<channels><channeltype="http"><paramname="success">ent/b2b/b2bQueryOrderResult{id=0452}</param>

<paramname="success1">ent/b2b/test{id=0021}</param></channel></channels>/**銀行內(nèi)部客戶*/ if(cusType!=null&&cusType.equals("3")) context.setState(1);//Action內(nèi)部根據(jù)業(yè)務(wù)決定跳轉(zhuǎn)的頁(yè)面……………Style驗(yàn)證style驗(yàn)證<fields>

<fieldname=“MerchantID">bpeMerchantIDStyle</field><fieldname=“OrderNum">B2BOrderNumber{option=true}</field><fieldname=“OrderStartDate">date10Style{option=true}</field><fieldname=“OrderEndDate">date10Style{option=true}</field></fields>style.xml:<styleid="date10Style"><setting><paramname="option">false</param><paramname="pattern">((((1[6-9]|[2-9]\d)\d{2})/(0[13578]|1[02])/(0[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})/(0[13456789]|1[012])/(0[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})/02/(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))/02/29))</param></setting></style>2、定義交易配置文件2上面的介紹是最基本的交易定義,根據(jù)交易的不同目的、以及復(fù)雜程度,可以通過(guò)選擇不同的模版、屬性定義來(lái)實(shí)現(xiàn)。例如:

executeNoTokenTemplate模版:可重復(fù)提交,查詢頁(yè)面可以使用executeTemplate模版:不允許重復(fù)提交的頁(yè)面必需使用,并且對(duì)應(yīng)的jsp頁(yè)面中要使用<bfw:token/>標(biāo)簽,來(lái)控制重復(fù)提交。

模版:文件上傳可以使用pageLoaderTemplate模版:準(zhǔn)備頁(yè)面可以使用3、定義菜單文件<!–清算交收菜單配置--><beanid=“menu.transfer”parent=“_MenuItem”><!--一級(jí)菜單:清算交收--><paramname="style">style_red</param><paramname="aimLeftChild">true</param><listname="children"><beanid=“menu.cd.ti”parent=“_MenuItem”><!--二級(jí)菜單:交易指令管理--><paramname="link"></param><paramname="aimLeftChild">true</param><listname="children"><beanid=“menu.cd.ti.operate”parent=“_MenuItem”><!--三級(jí)菜單:經(jīng)辦--><paramname="function">CD001</param><paramname="link">tiOperate.do</param></bean> <beanid=“menu.cd.ti.review”parent=“_MenuItem”><!--三級(jí)菜單:復(fù)核--><paramname="function">CD002</param><paramname="link">tiReview.do</param></bean>

</list></bean><!--這里可以繼續(xù)添加賬戶管理的二級(jí)菜單--></list></bean>菜單名稱,在menu_zh_CN.properties中定義對(duì)應(yīng)的頁(yè)面顯示菜單樣式定義,可在\BocnetClient\WebContent\common\css\zh_CN中找到菜單點(diǎn)擊對(duì)應(yīng)的交易菜單對(duì)應(yīng)角色權(quán)限的功能碼,權(quán)限在role.xml中定義4、角色權(quán)限配置文件Role.xml<!—清算交收權(quán)限配置--><beanclass="com.bocsoft.bfw.accesscontrol.rc.support.SimpleTrsGroupRole"> <paramname=“name”>CD001</param><!–指令管理--> <!–指令管理可以訪問(wèn)的交易--> <listname="roles"> <param>tiOperate

</param><!–指令經(jīng)辦查詢--> <param>tiAdd</param><!–指令經(jīng)辦增加--> <param>tiModify

</param><!–指令經(jīng)辦修改--> <param>tiDelete

</param><!–指令注銷-->

</list></bean>Bfw框架角色權(quán)限處理類,無(wú)需關(guān)注角色權(quán)限的功能碼,在role.xml中定義此功能碼下可以進(jìn)行的交易操作5、格式校驗(yàn)對(duì)公展現(xiàn)層輸入域格式校驗(yàn)包括三部分:1、jsp頁(yè)面的校驗(yàn),通過(guò)js實(shí)現(xiàn),大部分校驗(yàn)函數(shù)在\BocnetClient\WebContent\common\js-src\FormCheck.js中定義。頁(yè)面中不同格式輸入域的校驗(yàn)方法可以參考checklist。2、style校驗(yàn),通過(guò)在交易配置文件中定義輸入域,在style.xml中定義校驗(yàn)方法,由bfw框架進(jìn)行驗(yàn)證。避免定義新style,盡量復(fù)用已有style。3、action中校驗(yàn),前兩種校驗(yàn)主要針對(duì)單輸入域的校驗(yàn),對(duì)于和業(yè)務(wù)邏輯相關(guān)的復(fù)雜交易,需要在action中實(shí)現(xiàn)。頁(yè)面顯示jsp_message_zh_CN.propertiesL10N_7541=訂單信息如下,請(qǐng)復(fù)核!L10N_6296=訂單號(hào)L10N_0033=網(wǎng)上銀行L10N_0034=關(guān)閉L10N_0036=賬戶概覽-明細(xì)查詢-銀行賬戶-中國(guó)銀行網(wǎng)上銀行系統(tǒng)L10N_0037=關(guān)聯(lián)賬戶JSP頁(yè)面使用boc:translator標(biāo)簽來(lái)顯示:<tableborder="0"cellpadding="0"cellspacing="0"class="list_table"><tr><thcolspan="2"class="left"><%--訂單信息如下,請(qǐng)復(fù)核!--%><boc:translatorvalue="$L10N_7541"/></th></tr><tr><tdwidth="50%"class="right"><%--訂單號(hào):--%><boc:translatorvalue="$L10N_6296"/></td><td><c:outvalue="${MerchantOrderNo}"/></td>開(kāi)發(fā)階段寫成<boc:translatorvalue="訂單信息如下,請(qǐng)復(fù)核!"/>即可,上線前批程序生成頁(yè)眉、頁(yè)腳page_zh_CN.properties###對(duì)賬服務(wù)開(kāi)始####對(duì)賬單核對(duì)-賬單列表.0471=余額對(duì)賬單核對(duì)page.top.0471=我們?cè)谶@里為您提供余額對(duì)賬單核對(duì)、下載及其對(duì)應(yīng)的賬戶明細(xì)對(duì)賬單的查詢與下載功能page.bottom.0471=1、客戶點(diǎn)擊操作項(xiàng)下的“核對(duì)”可進(jìn)入該協(xié)議的賬單界面進(jìn)行核對(duì)賬單操作。<br>2、本界面上只顯示尚未反饋回執(zhí)的對(duì)賬單(含一年內(nèi)本期和非本期所有余額賬單),已核對(duì)完成的協(xié)議則不予以顯示#對(duì)賬單核對(duì)-賬單明細(xì).0472=余額對(duì)賬單賬戶明細(xì)核對(duì)page.top.0472=您可以在此點(diǎn)擊查看每個(gè)賬戶對(duì)應(yīng)的交易明細(xì)賬單,并確認(rèn)余額核對(duì)結(jié)果page.bottom.0472=1、點(diǎn)擊“提交”,系統(tǒng)將保存您本次操作結(jié)果;<br>2、點(diǎn)擊“暫存”,將暫存您本次操作結(jié)果,您在下次登陸時(shí)可繼續(xù)填寫;6、jsp頁(yè)面開(kāi)發(fā)1典型的頁(yè)面有三種:1、只有數(shù)據(jù)展示的簡(jiǎn)單頁(yè)面委托、修改結(jié)果頁(yè)面、詳情頁(yè)面

可選模板:executeNoTokenTemplate,pageLoaderTemplate2、有數(shù)據(jù)提交的頁(yè)面委托、修改可選模板:executeTemplate3、分頁(yè)頁(yè)面復(fù)核、授權(quán)選擇列表頁(yè)面,查詢結(jié)果頁(yè)面6、jsp頁(yè)面開(kāi)發(fā)2提交頁(yè)面<%@pagecontentType="text/html;charset=utf-8"%><%@taglibprefix="boc"uri="/WEB-INF/tlds/bocnet.tld"%><%@taglibprefix="bfw"uri="/WEB-INF/tlds/bfw.tld"%><%@taglibprefix="tiles"uri="/WEB-INF/tlds/struts-tiles.tld"%><%@tagliburi="/WEB-INF/tlds/c.tld"prefix="c"%><tiles:insertdefinition="baseDef"flush="true"><tiles:putname="bodyComment"><boc:translatorvalue="${VIEW_id}"prefix="page.top"/></tiles:put><tiles:putname="bodyInput"type="string">

<scriptlanguage="JScript.Encode"src="<boc:localeResourceuri="/common/js/calendar.js"/>"></script><scriptlanguage="JScript.Encode"src="<boc:localeResourceuri="/common/js/FormCheck.js"/>"></script><scriptlanguage="javascript"> functioncheckForm() { if(!check_empty("form1.PayeeValue|TrfDate|TrfAmt","<%--收款人--%><boc:translatorescape="js"value="$L10N_0903"/>|<%--付款日期--%><boc:translatorescape="js"value="$L10N_1158"/>|<%--付款金額--%><boc:translatorescape="js"value="$L10N_1168"/>")) returnfalse;

pageProcessing(); returntrue; }</script><boc:formname="form1"method="post"action="CGTSingleConsignResult.do"><bfw:token/><bfw:ViewName/><bfw:saveMap/>編碼格式Tile頁(yè)面類型公用js方法引用禁止頁(yè)面重復(fù)提交顯示bfw異常提示信息頁(yè)面提交異常返回后保留已有savedMap對(duì)象內(nèi)容顯示滾動(dòng)條,禁止頁(yè)面操作國(guó)際化定義6、jsp頁(yè)面開(kāi)發(fā)3提交頁(yè)面<bfw:hiddenfieldList="SmtDate,TrfCur,PayeeValue,PayeeBocFlag,PayeeShow,payeeListCount"/><tableborder="0"cellpadding="0"cellspacing="0"class="title_table"><tr><td><boc:translatorvalue="${VIEW_id}"prefix=""/></td></tr></table><br>

<tableborder="0"cellpadding="0"cellspacing="0"class="errorfont"><tr><td><c:outvalue="${_exceptionMessage}"/></td></tr></table>隱藏域,用來(lái)在頁(yè)面間傳遞數(shù)據(jù),名稱要和交易中一致異常信息顯示位置,和<bfw:ViewName>配合使用6、jsp頁(yè)面開(kāi)發(fā)4分頁(yè)頁(yè)面<boc:formname="form1"method="post"action="CGTAuthList.do"><%--分頁(yè)機(jī)制隱藏字段--%><bfw:combinedPage/><bfw:hiddenfieldList="custactNo,portName,exchType,tranTypeNo"/><%--分頁(yè)機(jī)制end--%><inputtype="hidden"name="Number"value=""/><c:iftest="${!emptyList}"><c:forEachitems="${List}"var="row"varStatus="status"><tr></tr></c:forEach></c:if></table><c:iftest="${!emptyList}"><tableborder="0"cellspacing="0"cellpadding="0"class="title_table"><tr><thalign="right"nowrap>

<%--查詢到--%><boc:translatorvalue="$L10N_0259"/><bfw:RecordNumber/><%--條記錄第--%><boc:translatorvalue="$L10N_0260"/><bfw:PageNo/><%--頁(yè)/共--%><boc:translatorvalue="$L10N_0261"/><bfw:PageNumber/><%--頁(yè)--%><boc:translatorvalue="$L10N_0262"/><bfw:PrevPagetype="2"/> <bfw:NextPagetype="2"/> <%--跳轉(zhuǎn)至第--%><%--頁(yè)--%><%--跳轉(zhuǎn)--%><boc:GotoPagetype="2"inputStyle="input-small"inputLeftValue="$L10N_0870"inputRightValue="$L10N_0262"value="$L10N_0905"/></th></tr></table>7、bfw標(biāo)簽<bfw:token/><bfw:ViewName/><bfw:saveMap/>boc:optionboc:translatorboc:radio<boc:hidden/><bfw:token/>

表單防重,禁止頁(yè)面重復(fù)提交。

配合模板e(cuò)xecuteTemplate使用。trs_*.xml交易配置文件<transactionid="cassCheckConfirmRes"template="executeTemplate"><actions><refname="act01">cassCheckConfirmResAction</ref></actions><channels><channeltype="http"><paramname="success">ent/cass/check/cassCheckConfirmRes{id=04713}</param></channel></channels></transaction>34<bfw:ViewName/>記錄當(dāng)前訪問(wèn)鏈接的地址,當(dāng)拋ValidationException時(shí)通過(guò)這個(gè)地址重定向到當(dāng)前頁(yè)面(顯示bfw異常信息)action

if(accountNoObj==null){//如果沒(méi)有余額調(diào)整記錄,拋出異常thrownewValidationException("bill.check.billAccDetailAdjust.detailSubmitEmpty"); }bfw_error_zh_CN.properties bill.check.billAccDetailAdjust.detailSubmitEmpty=賬單核對(duì)的賬號(hào)不為空頁(yè)面<boc:formname="form1"method="post"action=""><bfw:token/><bfw:saveMap/><bfw:ViewName/><tableborder="0"cellpadding="0"cellspacing="0"class="errorfont"> <tr><td><c:outvalue="${_exceptionMessage}"/></td></tr></table>35<bfw:saveMap/>

用于保留頁(yè)面裝載時(shí)的列表數(shù)據(jù)

頁(yè)面提交異常后保留已有savedMap對(duì)象的內(nèi)容A的數(shù)據(jù)發(fā)送到A的結(jié)果頁(yè)面顯示

/**設(shè)置上下文參數(shù)*/ context.setData("billId",newSaveObject(billId)); context.setData("billCheckDetailsSize",newSaveObject(String.valueOf(details.size()))); context.setData("billCheckDetails",newSavedArrayList(details));A的結(jié)果頁(yè)面中包含bfw:saveMap標(biāo)簽,頁(yè)面提交到BB拋出BfwException異常,跳回A的結(jié)果頁(yè)面,之前從A帶到頁(yè)面的數(shù)據(jù),希望保留顯示36boc:option1.列表數(shù)據(jù)來(lái)源與后臺(tái)數(shù)據(jù)庫(kù)<selectname="oppFundNo"id="oppFundNo"><boc:optionitems=“${oppFundNos}” 集合數(shù)據(jù)來(lái)源 currentValue=“${detail.oppFundNo}“ 當(dāng)前默認(rèn)選擇項(xiàng)的數(shù)據(jù)來(lái)源 optionName=“oppFundNo,oppFunName,openBank“列表文本 delimeter=“/“ 文本的間隔字符 delimeter1=“|“ 值的間隔字符 optionValue=“entityFundAct,oppFundType”/>列表的值</select>相當(dāng)于<selectname="oppFundNo"id="oppFundNo"><c:forEachvar="item"items="${oppFundNos}"><optionvalue=“${item.entityFundAct}|${item.oppFundType}”自動(dòng)選中>${item.oppFundNo}/${item.oppFundName}/${item.openBank}</option></c:forEach></select>37boc:option2.列表數(shù)據(jù)來(lái)源常量文件<selectname="transSource"><bfw:option

items=“${_constantsMap.TransSource}” constant.xml中l(wèi)ist的名稱

constantPrefix=“Ti.TransSource” perties中的前綴(key)

currentValue=“${detail.transSource}”/> 列表當(dāng)前默認(rèn)選中值的數(shù)據(jù)來(lái)源</select>38constant.xml:<!–指令來(lái)源--><listname="TransSource"><param>1</param><param>2</param><param>3</param></list>perties:#指令來(lái)源鍵值Ti.TransSource.1=人工Ti.TransSource.2=網(wǎng)銀Ti.TransSource.3=SWIFTboc:translator1.用于顯示常量(帶prefix)<c:forEachvar="item"items="${List}"><tr><td><c:outvalue="${item.traninstId}"/></td><td><boc:translatorvalue="${item.transSource}" prefix="Ti.TransSource"/>

</td></tr></c:forEach>根據(jù)貨幣碼,如人民幣001<boc:translatorvalue=“${row.currency.code}”prefix=“Currency.type”/>#幣種屬性Currency.type.=全部Currency.type.000=不可選擇Currency.type.001=人民幣元39boc:translator

2.用于國(guó)際化文本<tableborder="0"cellspacing="0"cellpadding="0"class="list_table"><tr><th><%--賬號(hào)--%><boc:translatorvalue="$L10N_0373"/></th><th><%--核對(duì)號(hào)--%><boc:translatorvalue="$L10N_7926"/></th>開(kāi)發(fā)階段,標(biāo)簽里直接寫中文即可<boc:translatorvalue="賬號(hào)"/>40jsp_message_zh_CN.propertiesL10N_0372=賬號(hào):L10N_0373=賬號(hào)L10N_0374=別名L10N_0375=賬戶信息如下,如需取消關(guān)聯(lián)請(qǐng)確認(rèn)!3.用于國(guó)際化文本(javascript)if(!check_empty(balanceSelectName,‘<%--客戶賬面余額--%>

<boc:translatorescape="js"value="$L10N_7930"/>‘))returnfalse;escape=“js“表示自動(dòng)轉(zhuǎn)譯特殊字符,如字符串中的單引號(hào)等,通常都需要加上41boc:button<%--提交--%><boc:buttonname="confirm"value="$L10N_7967"onclick="returnconfirmation();"type="submit"/>注意value里面不需要在使用boc:translator標(biāo)簽,以下是錯(cuò)誤的<%--提交--%><boc:buttonname="confirm"value="<boc:translatorvalue="$L10N_7967"/>"onclick="returnconfirmation();"type="submit"/>

42boc:formatNumber格式化標(biāo)簽貨幣格式化(需要貨幣碼)<boc:formatNumbervalue="${row.currentBalance}" bocCurrency="${row.currency.code}"/>數(shù)字格式化<boc:formatNumbervalue="${row.amount}"groupingUsed="false" maxFractionDigits="2"/>日期格式化(支持date和string)<boc:formatDatevalue="${row.modifyDate}"pattern="yyyy/MM/dd"/>43<boc:hiddenfieldList="CifNo,CifName"/>生成隱藏域,根據(jù)fieldList里逗號(hào)分割的key,隱藏域的value自動(dòng)取context里的data分頁(yè)時(shí),頁(yè)面的結(jié)果form需要加此標(biāo)簽,其中包含查詢form中的所有查詢條件的名稱context.setData(“CifNo",cifNo);context.setData(“CifName",cifName);44服務(wù)層開(kāi)發(fā)1、服務(wù)層的主要任務(wù)1.提供數(shù)據(jù)給展現(xiàn)層2.接受展現(xiàn)層傳入的數(shù)據(jù),并進(jìn)行邏輯處理3.通過(guò)調(diào)用產(chǎn)品層與外系統(tǒng)交互,調(diào)用DAO與數(shù)據(jù)庫(kù)交互,來(lái)實(shí)現(xiàn)以上兩功能。2、服務(wù)層與其他層之間的調(diào)用關(guān)系展現(xiàn)層服務(wù)層產(chǎn)品層DAODatabase外部系統(tǒng)或后臺(tái)系統(tǒng)3、服務(wù)層代碼接口類com.bocnet.service.financial.CyberGiroService實(shí)現(xiàn)類com.bocnet.service.financial.impl.CyberGiroServiceImpl4、接口類方法的實(shí)現(xiàn)publicTransactiondoTransactionSubmit(…)對(duì)公網(wǎng)銀生成的一筆交易記入數(shù)據(jù)庫(kù)1.整理付款方、付費(fèi)方、收款方信息2.他行收款的,驗(yàn)cnaps號(hào)與收款行名稱之間是否匹配3.驗(yàn)客戶業(yè)務(wù)編號(hào)防重4.設(shè)置費(fèi)率5.限額檢查6.調(diào)用審批流程、置交易狀態(tài)7.寫數(shù)據(jù)庫(kù)并記錄日志5、service.xml文件配置抽象Bocnet服務(wù)<beanid="_AbstractBocnetService“class="com.bocnet.service.AbstractBocnetService"><refname="operatorDao">operatorDao</ref><refname="overseaProduct">overseaProduct</ref><refname=“bondProduct">bondProduct</ref><refname=“stockProduct">stockProduct</ref>抽象服務(wù)被注入全部的產(chǎn)品和DAO,所有的服務(wù)應(yīng)該繼承此服務(wù),從而可以訪問(wèn)到需要的產(chǎn)品DAO。服務(wù)的配置及事務(wù)配置<beanid="CyberGiroService"parent="AbstractTransactionProxy"><beanid="_realCyberGiroService"name="target"class="com.bocnet.service.financial.impl.CyberGiroServiceImpl"parent="_AbstractBocnetService"/><propsname="transactionAttributes">

<paramname="doTransactionSubmit">PROPAGATION_REQUIRED,-serviceException</param></props></bean>DAO層開(kāi)發(fā)1、編寫DAO層要完成的幾件事情1.自己編寫或確認(rèn)(與服務(wù)層、展現(xiàn)層溝通)相應(yīng)實(shí)體類。

2.書寫sqlMap文件sql(可使用eclipse

abator插件生成后另行修改)

3.編寫DAO接口及實(shí)現(xiàn)類

4.編寫相關(guān)配置文件(sqlMapConfig.xml、dao.xml、service.xml)

下面以指令管理為例,簡(jiǎn)述DAO層的工作內(nèi)容2、自己編寫或確認(rèn)相應(yīng)實(shí)體類此過(guò)程需要與服務(wù)層、展現(xiàn)層溝通實(shí)體類從需求上說(shuō)是對(duì)業(yè)務(wù)實(shí)體的抽象,從技術(shù)上說(shuō)就是簡(jiǎn)單JavaBean,業(yè)務(wù)屬性構(gòu)成類的成員變量,再提供public的get/set方法就可以了。這一步重要的是要與服務(wù)展現(xiàn)層產(chǎn)品層有良好的溝通,變量命名合乎規(guī)范,實(shí)體類間繼承關(guān)系要合理、且要方便各層使用。3、書寫sql(具體語(yǔ)法請(qǐng)參考ibatis-guide)一般情況sql文件是放在sql-mapping目錄下。以cs-traninstSql.xml為例,BOCNET項(xiàng)目中一直使用命名空間,本例中namespace=“cs.traninst”,因此如果一個(gè)sql的ID是“selectTraninstByPk”,那么在系統(tǒng)中,該sql的唯一標(biāo)識(shí)就是”cs.traninst.selectTraninstByPk”4、編寫DAO接口及實(shí)現(xiàn)類一般情況,一個(gè)DAO是對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)表,本例中TraninstDao對(duì)應(yīng)數(shù)據(jù)庫(kù)CSTRANINST表,DAO提供增刪改查操作publicinterfaceTraninstDao//DAO接口聲明insert方法,一般由sql生成流水號(hào),并通過(guò)該方法將流水號(hào)返回intinsertTraninst(Traninstobject);delete方法,返回刪除條數(shù),返回值由調(diào)用者判斷是否處理intdeleteTraninst(IntegertraninstId);update方法,返回更新條數(shù),返回值由調(diào)用者判斷是否處理intupdateTraninst(Traninstobject);select方法,一般需提供多種根據(jù)主鍵查詢交易實(shí)體類,一般是用于頁(yè)面顯示交易明細(xì)使用

TraninstselectTraninstByPk((IntegertraninstId);復(fù)雜一點(diǎn)的查詢List<Traninst>selectTraninstByDynamic(Mapparams);5、編寫DAO接口及實(shí)現(xiàn)類DAO實(shí)現(xiàn)類需繼承SqlMapClientDaoSupport

public

classTraninstDaoImplextendsSqlMapClientDaoSupport

implementsTraninstDao{ privateStringselectTraninstByDynamica="cs.traninst.selectTraninstByDynamica"; privateStringinsertTraninst="cs.traninst.insertTraninst"; publicintinsertTraninst(Traninsttraninst){ introws=super.getSqlMapClientTemplate().update(insertTraninst,traninst))

returnrows; } publicList<Traninst>getTraninstByDynamic(Mapparams){ List<Traninst>list=(List<Traninst>) super.getSqlMapClientTemplate().queryForList(selectTraninstByDynamica,params); returnlist; }6、編寫相關(guān)配置文件cs-traninstSql.xml<sqlMapnamespace="cs.traninst"><!--交易指令表-->

<resultMapid="Traninst"class="com.gcs.entity.cs.traninst.impl.TraninstImpl"><resultcolumn="TRANINST_ID"property="traninstId"/><resultcolumn="TRAN_DATE"property="tranDate"/>

<resultcolumn="CUSTACT_NO"property="custactNo"/><resultcolumn="RECEV_TIME"property="recevTime"jdbcType="DATE"/>

<resultcolumn=“TRANS_TYPE”property=“transType”/><!--交易類型編號(hào)-->

<resultcolumn=“TRAN_TYPE_NAME”property=“tranconf.tranTypeName”/><!--交易類型對(duì)象.類型名稱--><resultcolumn="YN_PRE_MATCH"property="tranconf.ynPreMatch"/>

<resultcolumn="EXCH_NO"property="exchNo"/><!--交易場(chǎng)所對(duì)象(BMEXCH交易場(chǎng)所)--><resultcolumn="EXCH_NAME"property="exchLoa.exchName"/>

<resultcolumn="SECU_NO"property="secuNo"/><!--成交證券代碼--><resultcolumn="SECU_NO"property="secuBase"select="bm.secuBase.getSecuBaseWithDeliveLoaById"/><!--成交證券代碼對(duì)象-->

<resultcolumn="STA"property="sta"/>

</resultMap>

<sqlid="baseField">t.TRANINST_ID , t.TRAN_DATE, t.CUSTACT_NO, t.RECEV_TIME, t.TRANS_TYPE, t.EXCH_NO, t.STA</sql><sqlid="extField">cust.PORT_NAMEasPORT_NAME,tf.TRAN_TYPE_NAMEasTRAN_TYPE_NAME,tf.YN_PRE_MATCHasYN_PRE_MATCH,ex.EXCH_NAMEasEXCH_NAME,ex.EXCH_TYPEasEXCH_TYPE,ed.DELIV_NAMEasDELIV_NAME</sql>

<sqlid="extOuterJoin">leftouterjoinAMCUSTcustont.CUSTACT_NO=cust.CUSTACT_NOleftouterjoinBMEXCHexont.EXCH_NO=ex.EXCH_NO

leftouterjoinCSTRANCONFtfont.TRANS_TYPE=tf.TRAN_TYPE_NOandex.EXCH_TYPE=tf.EXCH_TYPE

leftouterjoinBMDELIVEedont.DELIV_NO=ed.DELIV_NO</sql><selectid="getTraninstSeq"resultClass="java.lang.Integer"> SELECTCSTRANINST_SEQ.NEXTVALAStraninstIdFROMDUAL</select>

<selectid="selectTraninstByPk"resultMap="Traninst"parameterClass="java.util.HashMap">select<includerefid="baseField"/>,<includerefid="extField"/>fromCSTRANINSTt<includerefid="extOuterJoin"/>wheret.TRANINST_ID=#traninstId#andt.TRAN_DATE=#tranDate#</select><selectid="selectTraninstByDynamica"resultMap="Traninst"parameterClass="java.util.HashMap">select<includerefid="baseField"/>,<includerefid="extField"/>fromCSTRANINSTt<includerefid="extOuterJoin"/>where1=1<isNotEmptyproperty="traninstId">andt.TRANINST_ID=#traninstId#</isNotEmpty><isNotEmptyproperty="dealNo">andt.DEAL_NO=#dealNo#</isNotEmpty><isNotEmptyproperty="custactNo">andt.CUSTACT_NOLIKE'%'||#custactNo#||'%'</isNotEmpty><isNotEmptyproperty="portName">andcust.PORT_NAMELIKE'%'||#portName#||'%'</isNotEmpty><isNotEmptyproperty="exchNo">andt.EXCH_NO=#exchNo#</isNotEmpty><isNotEmptyproperty="tranTypeNo">andt.TRANS_TYPE=#tranTypeNo#</isNotEmpty><isNotEmptyproperty="beginDate"> andto_date(t.TRANS_DATE,'yyyy-MM-dd')>=trunc(#beginDate#)</isNotEmpty><isNotEmptyproperty="endDate"> andto_date(t.TRANS_DATE,'yyyy-MM-dd')<![CDATA[<=]]>trunc(#endDate#)</isNotEmpty><isNotEmptyproperty="sta">andt.STAIN($sta$)</isNotEmpty>ORDERBYt.TRANINST_IDDESC</select>6、編寫相關(guān)配置文件1sqlMapConfig.xml文件<sqlMapConfig>

<settingsuseStatementNamespaces="true"/>

。。。

<sqlMap

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論