Ofbiz中的.groovy文件

一、Ofbiz项目中的.groovy文件,架构如下:

(注:图中actions文件夹下的各个文件夹中,都是.groovy文件)


二、Groovy是什么?

           1、一种动态语言

         2、构建于JVM上

         3、支持面向对象编程

         4、可以作为脚本语言

三、Ofbiz本身集成Groovy的方式?

        在ofbiz框架本身中,采用的方式是霸groovy作为一种脚本语言。

       (参见:org.ofbiz.service.engine.GroovyBaseScript、org.ofbiz.webapp.event.GroovyEventHandler)

四、在Ofbiz中,如何使用Groovy?

           1、在widget中声明使用

       2、在controller.xml中使用,需要在controller.xml文件中配置groovy的事件控制器

            <handler name="groovy" type="request" class="org.ofbiz.webapp.event.GroovyEventHandler">

             两种方式:

            1).指定它的路径

               

            2).指定方法名或不指定

                  

      3、在service.xml中使用

            1).指定groovy文件路径,可不指定方法名

                 

五、在widget、controller和service中使用groovy的区别?

       1).widget和Controller中使用groovy基本一致。Ofbiz的framework绑定了以下对象到groovy脚本。

               对象:request、response、session、dispatcher、delegator、security、locale、timeZone、userLogin、parametes、context(该对象在使用方法的时候不可用)

       2).service中,可以直接使用的对象有dispatcher、delegator、security、locale

       3).都可以调用的方法:

            

六、举例说明

        1、查询一个userLoginId为liuc的userLogin。

                创建一个UserLoginFinder.groovy的文件。

                   文件里直接写contxet.user=fingOne("UserLogin",[userLoginId:"liuc"])

                                        若从页面传过来的值,则contxet.user=fingOne("UserLogin",[userLoginId:parameters.UserId])

        2、再举个例子

            

               

七、扩展

      在Ofbiz中,我们可以针对原有的API,些更多的扩展,这样可以减少代码量。甚至可以写一个dsl解释器,在页面中写groovy的 业务逻辑,拿到后台执行。