




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Ofbiz中的中的groovyGroovy是什么?是什么?l一种动态语言l构建于JVM之上l支持面向对象编程l可以作为脚本语言Groovy的特性的特性l无缝集成JAVAl动态类型转换l支持DSL(Domain Specific Languages )l函数式编程l默认导入常用的包 如lang包、util包等l各种语法糖l元编程使用使用groovy的好处的好处l无缝集成所有的java库,一个Java类可以随意的调用groovy类,groovy中也可以任意的调用java类l语法特性支持,使程序更加简洁,可读性更强,代码量也更少使用使用groovy的弊端的弊端l相对于Java,代码执行速度更慢lID
2、E支持不如java举个例子:快排举个例子:快排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更方便二次开发l无需一行java代码l代码修改后无需编译,可直接运行l更少的代码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绑定了以下对象到groovy脚本,这些对象可以直接使用 request response session dispatcher delegator security locale timeZone userLogin parametes context (该对象在使用方法的时候不可用)l在service中,可以直接使用的对象有dispatcher、delegator、security、locale timeZone、userLogin、 parametesl在controllerwidgetservice中都可
5、以直接调用的一些简单方法 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) 举例子举例子我要查询一个userLoginId为zhny的userLogin首先我可以创建一个UserLoginFinder.groovy的文件在里面我可以直接这样写context.user= findOne(“UserLogin”,userLoginId:”zhny”)当然,如果要调用前台传过来的参数,可以这样 context.user= findOne(“UserLogin”,userLoginId:parameters.userId)再举个例子再举个例子l如过我要在groovy文件中指定
7、多个event,比如一个userLogin的增删查改1、首先,创建一个UserLoginEvent.groovy2、在之前说的三种方式中配置文件路径和调用方法3、在UserLoginEvent.groovy中编写多个方法 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的高级特性使用的高级特性使用l通过上面例子,上面的写法,实际上和Java本身没什么区别,无非就是一些对象、参数的绑定啊,groovy的简单用法l下面讲一下元编程在groovy中的用法和好处什么是元编程什么是元编程l在程序运行时完成部分本应在编译时完成的工作 l比如运行期动态增加类的方法、修改类的成员域的定义等等Groovy中的
10、元编程中的元编程l两种方式lExpandoMetaClass和和Category 举个例子举个例子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这样,我们在查询列表时可以这样写l“UserLogin”.findList(userLoginName:”zhny”,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网红甜品品牌区域代理授权合同及原料专供体系协议
- 智能家居产品分销商招募及市场推广支持合同
- 互联网广告内容审核与广告投放效果优化合作协议
- 父母子女抚养费银行账户监管与司法协助合同
- 网红咖啡品牌品牌形象设计及品牌故事创作合同
- 创新型创业企业融资法律顾问特殊普通合伙合同
- 物流传输设备安装与轨道调试及售后服务合同
- 2025至2031年中国脚气专用洗液市场现状分析及前景预测报告
- 2025至2030年蔑丝盆项目投资价值分析报告
- 2025至2030年中国镖杆卡行业投资前景及策略咨询报告
- 招商引资培训课件-招商引资讲课
- 走进神奇的中药学习通章节答案期末考试题库2023年
- 我眼中的抗战-抗战中的家书优秀PPT
- 计算机软件测试员(三级)技能理论考试题库(汇总)
- 计算机网络安全分析及防范措施毕业论文
- 二甲双胍(格华止)2型糖尿病的基础用药
- 脑白金操作手册
- 门诊病历书写模板全
- 15万ta焦油加工厂工业萘制取工段的初步设计
- 湖南省对口招生考试医卫专业十年真题(2010-2019年)
- 课题研究活动记录及课题研究会议记录表
评论
0/150
提交评论