添加一个新建表单

添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作。
在FindTutorial.xml文件中添加一个转换。
 <!--新增 列表 -->

    <transition>

        <service-call name="create#Tutorial"/>

        <default-response url="."/>

    </transition>

  

该转换只是调用lecreate#Tutorial服务,然后跳转回当前页面。
Moqui框架的服务门面支持一种特俗的无需定义实现的实体增删改查操作的服务,这个服务的名字由两部分组成:一个动词和一个名词,中间用#隔开/只要动词谓create  update  store delete ,同时名词是一个有效的实体名称,服务门面你就会认为这个服务是个隐式的自动实体服务并会完成预期的操作。这个服务调用时完全基于实体定义和传递的参数。例如:如果你使用create动词并传递实体的一个主键字段,服务就会使用这个主键字段,否则服务就会使用实体名称作为序列关键字自动生成主键序列号。
添加新增表单,当按钮点击时展现一个隐藏的容器界面,在之前创建的FindTutoria界面中添加容器到widget元素内的form-list元素上面,这样就会在列表表单上展现这个容器:
<container-dialog id="CreateTutorialDialog" button-text="Create Tutorial">

            <form-single name="CreateTutorial" transition="createTutorial">

                <auto-fields-entity entity-name="Tutorial" field-type="edit"/>

                <field name="submitButton">

                  <default-field title="Create">

                      <submit/>

                  </default-field>

                </field>

            </form-single>

        </container-dialog>

  

这个界面定义通过刚才添加的transition来引用,并且使用auto-fields-entity元素中值为edit的field-type元素定义来自动生成编辑字段,最后声明一个按钮去提交表单,这样就可以运行了。
 
 
自定义新增服务:
上面的CreateTutorial转换使用了隐式的自动实体服务create#Tutorial.
下面实现手动的创建新增服务
首先定义一个服务使用默认的自动实体增删改查实现,
runtime/component/tutorial/service/tutorial/TutorialServices.xml
<container-dialog id="CreateTutorialDialog" button-text="Create Tutorial">

            <form-single name="CreateTutorial" transition="createTutorial">

                <auto-fields-entity entity-name="Tutorial" field-type="edit"/>

                <field name="submitButton">

                  <default-field title="Create">

                      <submit/>

                  </default-field>

                </field>

            </form-single>

        </container-dialog>

  

FindTutorial.xml
<!--自定义新增 -->

  <transition name="createTutorial">

        <service-call name="tutorial.TutorialServices.create#Tutorial"/>

        <default-response url="."/>

    </transition>

  

 
 
Groovy服务:
如果要使用Groovy(或者框架支持的其他语言)而不应内嵌的XML动作去实现服务,怎么做?

<service verb="create" noun="Tutorial" type="script" location="component://tutorial/script/createTutorial.grovvy">

        <in-parameters>

            <auto-parameters include="all"/>

        </in-parameters>

        <out-parameters>

            <out-parameters>

                <auto-parameters include="pk" required="true"/>

            </out-parameters>

        </out-parameters>

    </service>

  

 
柘林的type属性已经变成了市场ripe,并且现在有个location属性去指定脚本的位置
 
Grovvy脚本的内容:
 
EntityValue tutorial=ec.entity.makeValue("Tutorial")

tutorial.setAll(context)

if(!tutorial.tutorialId)tutorial.setSequencedIdPrimary()

tutorial.create()

  

Moqui学习Day4的更多相关文章

  1. Moqui学习之代码分析mantle priceServices.xml

    <?xml version="1.0" encoding="UTF-8"?> <!-- This software is in the pub ...

  2. Moqui学习之数据与资源

    资源位置: 资源门面位置的字符串类似于URL的构成方式:协议,主机,可选端口和文件名.它支持标准的java URL协议(http https ftp jar file).同样也支持一些扩展的协议: c ...

  3. Moqui学习Day3

    添加一个新建表单 添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作. 在FindTutorial.xml文件中添加一个转换. <!--新增 列表 --> <transit ...

  4. Moqui学习Day2

    用户 本地化  消息和日志门面 用户门面用于管理当前用户和访问,登陆,授权及登出的信息.用户信息包括区域设置,时区以及币种/ec.user.nowTimestamp设置日期. 消息门面用于追踪用户的消 ...

  5. Moqui学习Day1

    运行时目录以及Moqui的xml配置文件 Moqui框架部署运行主要有三个核心部分: 可执行的war包文件 运行时目录 Moqui配置文件XML格式 不管怎么使用这个可执行的war文件,你必须拥有一个 ...

  6. python全栈学习--day4

    列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:   1 li = ['alex',123,Ture,(1,2,3,'wu ...

  7. python学习day4软件目录结构规范

    为什么要设计好目录结构? 参考:http://www.cnblogs.com/alex3714/articles/5765046.html "设计项目目录结构",就和"代 ...

  8. 自动化测试学习day4

    主要学习内容:修改文件.集合.函数.模块 修改文件两种方法 修改文件方法一(缺点:代码繁琐,一次性将文件读出,文件过大可能会卡住) with open('geci', 'a+', encoding=' ...

  9. Python学习-day4

    学习装饰器,首先听haifeng老师讲解了一下准备知识. 1.函数即变量 2.高阶函数+嵌套函数==>装饰器 装饰器的作用是在,1)不改变源代码,2)不改变原函数的调用方式的前提下为函数增加新的 ...

随机推荐

  1. BendFord's law's Chi square test

    http://www.siam.org/students/siuro/vol1issue1/S01009.pdf bendford'law e=log10(1+l/n) o=freq of first ...

  2. μc/osⅡ简化版任务机制浅析

    去年玩过一阵单片机,也用过μc/osⅡ的系统,但是就理解内核而言,整个即时操作系统还是过于冗杂,很多的东西很不适合初学者来动手操作,多方查找我发现他的任务机制可以进行功能的进一步简化, 可以类似于任务 ...

  3. PAC学习框架

    PAC学习框架是机器学习的基础.它主要用来回答以下几个问题: 什么问题是可以高效学习的? 什么问题本质上就难以学习? 需要多少实例才能完成学习? 是否存在一个通用的学习模型? PAC=probably ...

  4. Codeforces Round #274 Div.1 C Riding in a Lift --DP

    题意:给定n个楼层,初始在a层,b层不可停留,每次选一个楼层x,当|x-now| < |x-b| 且 x != now 时可达(now表示当前位置),此时记录下x到序列中,走k步,最后问有多少种 ...

  5. Mecanim的Avater

    角色共用同一套动作原理 先说说为什么不同的角色可以共用同一套动作:因为导入之后,我们需要为它们每一个模型都创建一个Avater,而Avater里存储了骨骼的蒙皮信息(创建Avater时把三维软件里的蒙 ...

  6. View (三) 视图绘制流程完全解析

    相 信每个Android程序员都知道,我们每天的开发工作当中都在不停地跟View打交道,Android中的任何一个布局.任何一个控件其实都是直接或间 接继承自View的,如TextView.Butto ...

  7. 转 异常处理汇总 ~ 修正果带着你的Net飞奔吧!

    异常处理汇总 ~ 修正果带着你的Net飞奔吧!   异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 异常处理汇总-开发工具  h ...

  8. 单机最大tcp连接数

    from:http://www.cnblogs.com/mydomain/archive/2013/05/27/3100835.html 单机最大tcp连接数 网络编程 在tcp应用中,server事 ...

  9. openstack中彻底删除计算节点的操作记录

    在使用openstack的过程中,我们经常会添加好几台计算节点来部署虚拟机,在后续使用中由于某些原因,一些计算节点出现了问题,需要将这些出了问题的计算节点从openstack的控制节点中踢出去!但是很 ...

  10. Nginx反向代理+负载均衡简单实现(http方式)

    1)nginx的反向代理:proxy_pass2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103.110.186.8/192.168.1. ...