ofbiz中g(shù)roovy的使用_第1頁(yè)
ofbiz中g(shù)roovy的使用_第2頁(yè)
ofbiz中g(shù)roovy的使用_第3頁(yè)
ofbiz中g(shù)roovy的使用_第4頁(yè)
ofbiz中g(shù)roovy的使用_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Ofbiz中的中的groovyGroovy是什么?是什么?l一種動(dòng)態(tài)語言l構(gòu)建于JVM之上l支持面向?qū)ο缶幊蘬可以作為腳本語言Groovy的特性的特性l無縫集成JAVAl動(dòng)態(tài)類型轉(zhuǎn)換l支持DSL(Domain Specific Languages )l函數(shù)式編程l默認(rèn)導(dǎo)入常用的包 如lang包、util包等l各種語法糖l元編程使用使用groovy的好處的好處l無縫集成所有的java庫(kù),一個(gè)Java類可以隨意的調(diào)用groovy類,groovy中也可以任意的調(diào)用java類l語法特性支持,使程序更加簡(jiǎn)潔,可讀性更強(qiáng),代碼量也更少使用使用groovy的弊端的弊端l相對(duì)于Java,代碼執(zhí)行速度更慢lID

2、E支持不如java舉個(gè)例子:快排舉個(gè)例子:快排ldef quicksort(List list) if(list.size()2)return list def pivot=listlist.size().intdiv(2) def left=list.grepitpivot return quicksort(left)+mid+quicksort(right)Ofbiz中使用的中使用的groovy的好處的好處l更方便二次開發(fā)l無需一行java代碼l代碼修改后無需編譯,可直接運(yùn)行l(wèi)更少的代碼Ofbiz框架本身集成框架本身集成groovy的方的方式式l在ofbiz框架本身中,采用的方式是把gro

3、ovy作為一種腳本語言,參見 org.ofbiz.service.engine.GroovyBaseScript及org.ofbiz.webapp.event.GroovyEventHandler怎樣在怎樣在ofbiz中使用中使用groovy?在在widget中聲明使用中聲明使用在在controller.xml中聲明使用中聲明使用在在controller.xml中使用注意中使用注意l需在controller.xml文件中配置groovy的事件控制器l在在service.xml中使用中使用在在widget、controller和在和在service中使用中使用groovy的差異的差異l在widg

4、et和Controller中使用groovy基本一致,ofbiz的framework綁定了以下對(duì)象到groovy腳本,這些對(duì)象可以直接使用 request response session dispatcher delegator security locale timeZone userLogin parametes context (該對(duì)象在使用方法的時(shí)候不可用)l在service中,可以直接使用的對(duì)象有dispatcher、delegator、security、locale timeZone、userLogin、 parametesl在controllerwidgetservice中都可

5、以直接調(diào)用的一些簡(jiǎn)單方法 Map runService(String serviceName, Map inputMap) GenericValue findOne(String entityName, Map inputMap) List findList(String entityName, Map inputMap) GenericValue makeValue(String entityName) logInfo(String message) logWarning(String message) logError(String message) success(String mess

6、age) failure(String message) error(String message) 舉例子舉例子我要查詢一個(gè)userLoginId為zhny的userLogin首先我可以創(chuàng)建一個(gè)UserLoginFinder.groovy的文件在里面我可以直接這樣寫context.user= findOne(“UserLogin”,userLoginId:”zhny”)當(dāng)然,如果要調(diào)用前臺(tái)傳過來的參數(shù),可以這樣 context.user= findOne(“UserLogin”,userLoginId:parameters.userId)再舉個(gè)例子再舉個(gè)例子l如過我要在groovy文件中指定

7、多個(gè)event,比如一個(gè)userLogin的增刪查改1、首先,創(chuàng)建一個(gè)UserLoginEvent.groovy2、在之前說的三種方式中配置文件路徑和調(diào)用方法3、在UserLoginEvent.groovy中編寫多個(gè)方法 def userCreate() user=delegator.makeValue(“UserLogin”,userLoginName:,userLoginPassword:parameters.pass); user.create() return success(“success”) def userDelete() try dispatch

8、er.runSync( userDeleteService, userLoginId:parameters.id) catch(Exception e) logError(“delete userLogin faild,reason:”+e.getMessage) 多條件查詢def findUserList() List conditionList = newnew ArrayList() if() conditionList EntityCondition. makeCondition(“userLoginName”,) if()

9、userList=delegator.find(“UserLogin”,conditionList null,null,null,false) request.setAttribute(“userList”,uesrList) return success()Groovy的高級(jí)特性使用的高級(jí)特性使用l通過上面例子,上面的寫法,實(shí)際上和Java本身沒什么區(qū)別,無非就是一些對(duì)象、參數(shù)的綁定啊,groovy的簡(jiǎn)單用法l下面講一下元編程在groovy中的用法和好處什么是元編程什么是元編程l在程序運(yùn)行時(shí)完成部分本應(yīng)在編譯時(shí)完成的工作 l比如運(yùn)行期動(dòng)態(tài)增加類的方法、修改類的成員域的定義等等Groovy中的

10、元編程中的元編程l兩種方式lExpandoMetaClass和和Category 舉個(gè)例子舉個(gè)例子l首先我們看多條件查詢剛才的寫法 List conditionList = newnew ArrayList() if() conditionListreturn v?EntityCondition.makeCondition(delegate, EntityOperator.LIKE, %+v+%):null我們這兒就可以這樣寫查詢操作lconditionList return delegator.findList(delegate,EntityCondition.makeCondition(c),f,null,null,false) findOnec-return delegator.findOne(delegate,c,false)ll這樣,我們?cè)诓樵兞斜頃r(shí)可以這樣寫l“UserLogin”.findList(userLoginName:”zhny”,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論