添加一个新建表单

添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作。
在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
<services>

    <service verb="create" noun="Tutorial" type="entity-auto">

        <in-parameters>

            <!--允许将Tutorial实体的所有字段传入-->

            <auto-parameters include="all"/>

        </in-parameters>

        <out-parameters>

            <!--返回主键字段-->

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

        </out-parameters>

        <actions>

            <entity-make-value entity-name="Tutorial" value-field="tutorial"/>

            <entity-set value-field="tutorial" include="all"/>

            <if condition="!tutorial.tutorialId">

                <entity-sequence-id-primary value-field="tutorial"/>

            </if>

        </actions>

    </service>

</services>

  

 
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学习Day3的更多相关文章

  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学习Day4

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

  4. Moqui学习Day2

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

  5. Moqui学习Day1

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

  6. python学习-day3

    今天是第三天学习,加油! 第一部分 集合 一.集合 1.什么是集合以及特性? 特性:无序的,不重复的序列,可嵌套. 2.创建集合 方法一:创建空集合 s1 = set() print(type(s1) ...

  7. python学习day3

    目录: 1.集合set 2.计数器 3.有序字典 4.默认字典 5.可命名元组 6.队列 7.深浅拷贝 8.函数 9.lambda表达式 10.内置函数 一.集合set set是一个无序且不重复的元素 ...

  8. python学习Day3 变量、格式化输出、注释、基本数据类型、运算符

    今天复习内容(7项) 1.语言的分类 -- 机器语言:直接编写0,1指令,直接能被硬件执行 -- 汇编语言:编写助记符(与指令的对应关系),找到对应的指令直接交给硬件执行 -- 高级语言:编写人能识别 ...

  9. python学习 day3 (3月4日)---字符串

    字符串: 下标(索引) 切片[起始:终止] 步长[起始:终止:1] 或者-1 从后往前 -1 -2 -3 15个专属方法: 1-6  : 格式:大小写 , 居中(6) s.capitalize() s ...

随机推荐

  1. SQL TUNNING

    In a Nested Loops Join, for example, the first accessed table is called the outer table and the seco ...

  2. 【CSS】颜色码对照表

    英文代码 形像颜色 HEX格式 RGB格式 LightPink 浅粉色 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 #DC14 ...

  3. codeforces 709B B. Checkpoints(水题)

    题目链接: B. Checkpoints 题意: 给了n个点,现在给一个起点,问最少访问n-1个点的最小行走距离是多少; 思路: 分情况讨论就好了; AC代码: #include <iostre ...

  4. 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等

    http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...

  5. Android组件---四大布局的属性详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4372222.html Android常见布局有下面几种: LinearL ...

  6. AC日记——codevs 1086 栈 (卡特兰数)

    题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). ...

  7. NGUI OnChange Event

    那些组件有OnChange? 下面这些组件都有OnChange事件,当你点击,下拉选择时,就会触发它们. NGUI中对应的组件 PopupList (下拉列表) Toggle (复选框) Input ...

  8. UITextView限制字数与行数

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSSt ...

  9. kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装Windows虚拟机)-(4)

    一.背景说明  在之前的篇章中,提到在webvirtmgr里安装linux系统的vm,下面说下安装windows系统虚拟机的操作记录: 由于KVM管理虚拟机的硬盘和网卡需要virtio驱动,linux ...

  10. Eclipse发布地址不同引发的问题

    eclipse发布到workspace metadata时,进不去http://localhost:8888页面.但是,它可以启动JAZZ和“公司的一个工程”. 而 eclipse发布到tomcat ...