Moqui学习Day4

添加一个新建表单

添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作。

在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()

  

时间: 2024-09-30 11:50:38

Moqui学习Day4的相关文章

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

为什么要设计好目录结构? 参考:http://www.cnblogs.com/alex3714/articles/5765046.html "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度: 1.一类同学认为,这种个人风格问题"无关紧要".理由是能让程序work就好,风格问题根本不是问题: 2.另一类同学认为,规范化能更好的控制程序结构,让程序具有更高的可读性: 我是比较偏向于后者的,因为

java学习 Day4

今天学了数组.做了不少练习,感觉还是都很简单的,在这里记录一下学习内容. 声明数组 dataType[] arrayRefVar; // 首选的方法 或  dataType arrayRefVar[]; // 效果相同,但不是首选方法 注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量. dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言. 创建数组 和c/c++不

Moqui学习之数据与资源

资源位置: 资源门面位置的字符串类似于URL的构成方式:协议,主机,可选端口和文件名.它支持标准的java URL协议(http https ftp jar file).同样也支持一些扩展的协议: classpath://  java类路径的资源 content://内容仓库的资源(JCR 经由Jackrabbit客户端):路径中协议前缀后的第一个元素是内容仓库的名称,其在Moqui的XML配置文件中被repository.name属性指定. component://相对于组件所在位置的路径.无

HTML5学习-Day4

前面三天的学习后,发现HTML部分倒是很好好理解和学习,大部分内容都和Word文档很像,主要是Css样式部分,由于样式的多样性,要记的也很多,所以今天花了很多时间主要用于深入了解Css的选择器,内容由网上收集整理而来 基本选择器 1. 通配符选择器 ( * ) 通配所有元素,也可以选择某元素下的所有元素 *{ //样式内容 } //也可以 .class * { //样式内容 } 2. 元素选择器 ( E ) 直接使用元素名,这是css中最常用的而且最基本的选择器 p{ //P元素的样式内容 }

python全栈学习--day4

列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: 1 li = ['alex',123,Ture,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'alex'}] 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据.列表是有序的,有索引值,可切片,方便取值. 索引,切片,步长 li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',

android开发学习——day4

自己手动创建空活动,创建和加载布局,效果:界面中出现靠上对齐的button 在活动中使用Toast,效果:对点击按钮做出响应 在活动中使用menu,效果:界面中出现菜单,并且点击对应选项会有响应 Demo: FirstActivity.java package com.example.hs769.activitytest; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import andro

python 学习day4

函数装饰器 内置函数 编译字符串成为python代码 # s = "print(123)"# compile(s, "<string>", "exec") 执行代码.字符串.表达式 # exec("print(1+2+3)")  #代码与字符串都可以执行,但是无返回值(无返回值)# print(eval("1+2+3"))  #可以执行表达式,将执行结果当作返回值返回(有返回值) dir(dic

Python3学习DAY4

一些内置函数和常用的函数: 内置函数: abs(number):返回一个数的绝对值. chr(number):ASCII码转换为字符,相反的函数order divmod(num1, num2):求出商和余数,返回一个tuple. divmod(10,3)=(3,1) eval(source[, globals[, locals]]):求表达式的值 excefile(object[, globals[, locals]]):exec语句用来执行储存在字符串或文件中的Python语句. 例:exec

python学习day4之路文件的序列化和反序列化

json和pickle序列化和反序列化 json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有程序之间的交互,json将取代XML,由于XML格式稍微比较复杂.现在程序之间的交互都是用json来进行文件信息的交互. 在使用json序列化和反序列化的时候,dump一次,就要load一次,不能操作. json序列化的过程,就是写入文件中,让另外一个编程语言进行调用: import json in