添加一个新建表单

添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作。
在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. 警惕javascript变量的全局污染问题

    作用域的概念总是和变量形影不离,它不是javascript语言独有的概念,只是其运用上与其他大型语言略有不同,JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基 ...

  2. Legendre polynomials

    In mathematics, Legendre functions are solutions to Legendre's differential equation: In particular, ...

  3. SQL里面如何取得前N条数据?

    select * from table order by id limit 10 运用limit可以获取前N个数据

  4. uGUI练习(二) Animate UI

    练习目标 通过Animation录制UI动画 一.步骤 1.创建一个Panel,下面再创建两个子Panel 2.修改Canvas的 Render Mode为Screen Space-Camer 3.为 ...

  5. Linux搭建python环境

    环境: CentOS 6.4 前言:CentOS 6.4系统自带的有python2.6.6版本 一.下载文件 python官网:https://www.python.org/downloads/ 版本 ...

  6. Apache轻量级性能测试工具

    平时工作中会需要一些性能测试,简单的性能测试完全可以由AB来替代,而不需要动用LR这样重量级的工具. 此文简单介绍一下ab的工具使用与结果分析.当作个笔记,以便以后查阅. 1.安装:要使用AB,需要先 ...

  7. 七、Block 封装代码

    1.概念:封装代码块,调用的时候使用 2.声明 返回类型(^名字)(参数1,参数2..) = (参数类型 变量1,参数类型, 变量2){ }; int (^Sum)(int,int)  = ^(int ...

  8. 21Mybatis_订单商品数据模型_一对多查询——resultMap方式

    这篇文章延续订单商品数据模型,这张讲述的是一对多的查询.(用resultMap) 给出几张表的内容: User表:

  9. Xcode7 真机调试步骤以及遇到的问题解决办法

    打开Xcode7,打开preference 添加自己的apple ID登陆上去 打开一个自己的想要运行在真机上的项目 插上自己的iPhone真机(真机没必要是最新的系统,没必要升级,我刚开始报错以为是 ...

  10. 第二章 rabbitmq在mac上的安装

    下载页: http://www.rabbitmq.com/install-standalone-mac.html 1.下载页面首部的文件(页面下载可能比较慢,使用迅雷下载就好),之后解压到一个合适的路 ...