首页 > 代码库 > XForms设计器----模型管理
XForms设计器----模型管理
在模型视图中进行模型管理。
模型配置
属性名称 | 描述 |
Schema | 一个模型可以有多个schema文件,开发人员可以通过schema文件选择器选择多个文件,如果手动录入,则多个schema文件以空格分隔;文件的位置为相对于WebContent目录的绝对路径。 |
schema文本 | 模型的schema文本,必须是完整的schema文件内容 |
标识 | 模型的ID,是运行时访问模型的重要配置 |
名称空间 | 模型所有的名称空间列表,从schema文件或schema文本中抽取 |
注意:所配置的schema文件需要同步到gforms服务器上,并且需要在运行时配置文件config.properties中配置appURL,否则会报如下错误:
详细参考《GForms FAQ》文档。
创建模型
在模型树的根节点或模型视图的工具栏中都可以进行模型的创建:
>模型树根节点:
>模型视图工具栏:
模型的创建包含三种方式:
- 创建空模型:将创建一个只包含ID的空模型,模型下不包含任何模型实例、绑定、动作等信息。
- 从XML创建模型:将创建一个包含ID的模型,模型下面创建一个从XML数据所构建的模型实例。
- 从schema创建模型:创建一个模型,并且在模型下创建一个根据所选择的schema构建的模型实例及schema中的数据类型绑定。
1、从XML创模型
在弹出的对话框中粘贴需要创建模型的XML数据片段,XML数据片段可以有根元素,也可以没有。
点击“OK”后,所创建的模型位于模型树中,并在模型下方有模型实例:
并可以在模型实例视图中看到instance2模型实例。
2、从schema创模型
GForms设计器支持从schema创建模型:
》第一步:输入schema文本
schema文件文本如下:
<xs:schema xmlns:my="http://commerce.example.com/payment" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://commerce.example.com/payment" elementFormDefault="qualified"> <xs:element name="payment"> <xs:complexType> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:choice> <xs:element ref="my:cc" /> <xs:element ref="my:exp" /> <xs:element ref="my:expenses" /> </xs:choice> </xs:sequence> <xs:attribute name="as" type="my:paymentAs" /> </xs:complexType> </xs:element> <xs:element name="cc" type="my:cc" /> <xs:element name="exp" type="xsd:gYearMonth" /> <xs:element name="expenses" type="my:expenses" /> <xs:simpleType name="cc"> <xs:restriction base="xsd:string"> <xs:minLength value="http://www.mamicode.com/12" /> <xs:maxLength value="http://www.mamicode.com/19" /> <xs:pattern value="http://www.mamicode.com/[0-9]+" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="paymentAs"> <xs:restriction base="xsd:string"> <xs:enumeration value="http://www.mamicode.com/cash" /> <xs:enumeration value="http://www.mamicode.com/credit" /> </xs:restriction> </xs:simpleType> <xsd:simpleType name="expenses"> <xsd:restriction base="xsd:decimal"> <xsd:fractionDigits value="http://www.mamicode.com/2"/> </xsd:restriction> </xsd:simpleType> </xs:schema> |
第二步:选择创建模型的元素
点击“Finish”后,所创建的模型位于模型树中,并在模型下方有模型实例:
可以看到在模型下方有一个模型实例及若干个绑定,绑定的定义从schema文件中抽取元素数据类型作为绑定的数据类型。
并可以在模型实例视图中看到instance2模型实例。
同时,所引入的schema内容将作为所创建的模型的schema文本内容,请选择“model3”,然后在属性视图中可以看到:
注意:模型所引入的schema内容可以作为运行时数据校验的依据,上述schema所创建的模型实例中,如果拖拽as属性到设计器,则默认会构建一个下拉框控件,控件的两个选项为cash、credit;同时在运行时绑定到数据节点instance(‘instance2‘)/pay:payment/pay:cc的控件,将校验其长度为12。
创建模型实例
在模型树的模型节点右键菜单中可以看到创建模型实例的功能菜单项:
模型的创建包含三种方式:
- 创建空模型实例:将创建一个只包含ID的空模型实例,模型实例不包含任何XML数据节点。
- 从XML创建模型实例:将创建一个包含ID的模型实例,模型实例下面创建一个从XML数据所构建的XML数据结构。
- 从schema创建模型实例:创建一个模型实例,并且在模型实例下创建一个根据所选择的schema构建的XML数据节点结构。
1、从XML创建模型实例
在弹出的对话框中粘贴需要创建模型实例的XML数据片段,XML数据片段可以有根元素,也可以没有。
点击“OK”后,所创建的模型实例位于刚刚所选的模型下:
并可以在模型实例视图中看到instance5模型实例。
2、 从schema创建模型实例
GForms设计器支持从schema创建模型实例:
第一步:输入schema文本
schema文件文本参考“从schema创建模型”章节。
第二步:选择创建模型的元素
点击“Finish”后,所创建的模型位于模型树中,并在模型下方有模型实例:
并可以在模型实例视图中看到instance6模型实例。
注意:所引入的schema内容不会作为运行时数据校验的依据,而是仅仅从schema中选择某个的元素来构建一个模型实例,简化模型实例创建,并不会从schema文件中读取任何其他约束信息,如元素数据类型等。
3、 配置模型实例
选择模型树中的某个模型实例节点,在“属性视图”中可以查看或配置模型是的相关配置项,其中src配置项表示模型实例的数据来自于某个文件。
创建绑定
可以在模型树中创建绑定,绑定是对某个数据节点的各种约束定义,包括对数据节点定义其的数据类型、只读条件、依赖条件、计算公式、约束配置等。
在模型树的模型节点右键菜单中可以看到创建绑定的功能菜单项:
新建绑定后,在模型下方出现新建的绑定,此时在“属性视图”中可以对该绑定进行属性配置,如下图所示:
对于一个绑定,首先要定义其节点,节点可以通过XPath编辑器编辑节点选择的xpath表达式。
属性名称 | 描述 |
节点 | 绑定所定义的数据节点,xpath表达式 |
必填项约束 | xpath表达式,计算结果为布尔值,定义数据节点的required条件,运行时如果满足该条件则引用该绑定的数据节点的控件将展现为必填项 |
标识 | 绑定的ID |
计算 | xpath表达式,计算结果为字符串,定义数据节点的计算公式,表示节点不是由用户输入的,而是根据公式动态计算 |
类型 | 节点的数据类型,数据类型包括xpath所定义的数据类型,并包括当前数据模型的schema中的数据结构 |
相关性约束 | xpath表达式,计算结果为布尔值,定义数据节点与其他节点的依赖关系 |
约束 | xpath表达式,计算结果为布尔值,定义数据节点约束条件,运行时如果满足该条件则引用该绑定的数据节点的控件将展现为错误状态 |
约束消息 | 只有定义了约束该配置才生效,这样在运行时如果违反该绑定的约束,则会使用该约束消息提示用户,约束消息的构建请参考格式化校验手册。 注意:消息列表来自于全局约束消息集合。 |
只读 | xpath表达式,计算结果为布尔值,定义数据节点只读条件,运行时如果满足该条件则引用该绑定的数据节点的控件将展现为只读状态 |
浏览 | xpath表达式,计算结果为布尔值,定义数据节点浏览态条件,运行时如果满足该条件则引用该绑定的数据节点的控件将展现为浏览状态 |
配置提示:
l xpath表达式:既可以手动录入xpath表达式,也可以通过xpath编辑器辅助创建xpath表达式。
l 子绑定:绑定下方还可以包含绑定,用于定义父绑定的数据节点的不同配置项。通常不会使用到子绑定。
创建提交submission
提交submission是GForms前端与后端服务交互的桥梁,submission的创建方式为:在模型视图中---》选择模型树---》选择某个需要创建提交的模型—》右键菜单—》“提交”:
新建“提交”后,在模型下方出现新建的提交,此时在“属性视图”中可以对该提交进行属性配置,如下图所示:
对于一个提交,必须定义资源路径,资源路径可以通过xpath定义,也可以指定一个静态的资源路径URL。
属性名称 | 描述 |
数据引用(Ref) | 绑定所定义提交所提交的数据节点,xpath表达式,可为空 |
编码 | 提交时系列化的数据编码,默认为UTF-8 |
标识 | 提交的ID,是send动作引用该标识进行动作提交 |
方法 | 配置提交的mehtod,可选的有:post、get、put、delete,默认为post |
分隔符 | 默认为&,当“方法”method为get、delete时,提交的资源路径将根据数据将进行编码构建。 如提交的数据为:<input3>test</input3>,资源URL为:http://localhost:8080/test/weather,则实际提交的资源URL为: http://localhost:8080/test/weather?input3=test |
介质类型 | 提交到后台的请求头Accept(方法为get、delete时)或Content-Type(方法为Post、put时)内容,可选的有:application/xml、text/xml、application/json、text/json、application/x-www-form-urlencoded、application/soap+xml,默认为application/xml |
模式(mode) | 提交方式,可选的同步、异步,默认为异步 |
目标绑定 | xpath表达式,当提交数据返回时,需要替换的目标模型实例节点,当“替换”为“实例”、“文本”时该配置有效,否则无效。 |
实例 | 提交数据返回时,需要替换的目标模型实例(当“替换”配置为模型实例时有效)。注意:该配置不会对提交的数据产生任何约束,如果要提交模型下非默认模型实例到后端,则请配置ref为那个非默认模型实例的xpath即可 |
替换 | 当提交数据返回时,处理方式:全部、实例、文本、空,默认为全部,其中: 全部:表示响应数据将替换当前页; 实例:表示将使用响应信息替换某个模型实例; 文本:表示将把响应信息作为文本添加到某个模型实例节点; 无:表示不作任何处理。 |
相关性约束 | 是否需要提交relevant属性为false的数据节点,默认为false,表示提交所有节点(relevant是通过配置节点的绑定relevant相关属性) |
校验 | 是否对提交到数据进行校验,如果校验失败则提交失败并抛出xforms-submit-error事件 |
系列化 | XML模型实例系列化类型,,可选的有:application/xml、application/x-www-form-urlencoded、multipart/related 、multipart/form-data 、none,默认为application/xml |
资源XPath | 提交的后端服务URL路径,通过XPath动态从模型实例中获取 |
资源值 | 提交的后端服务URL路径,如果配置了“资源XPath”则运行时忽略该配置 |
soap action | 资源URL为web服务时有用 |
配置提示:
- 相关性约束:如果配置为true则表示当系列化需要提交的模型实例或模型实例节点时,将把那些配置了绑定属性relevant的数据节点,如果计算relevant为false,则该节点将不被系列化。
- 介质类型:如果后端服务依赖于所传递前端所发送的Accept,如spring Restfull,此时当方法为post时,需要格外注意,需要配置replace为instance并配置媒体类型为合适的类型才能实现该目的。
1、submission动作
提交可以包含若干个动作,这些动作的事件只能为:
xforms-submit、xforms-submit-error、xforms-submit-done,事件具体描述请参考“GForms标准事件”。
创建动作
操作是GForms平台提供的标准操作,操作创建方式为:在模型视图中---》选择模型树---》选择某个需要创建动作的模型—》右键菜单—》“动作”:
2、标准动作列表
GForms平台提供的标准动作如下表:
动作 | 动作描述 |
reset | 把所选择的模型下的所有模型实例的内容进行重置 |
rebuild | 对目标模型的所有模型实例数据结构进行重建:绑定、模型实例等,该操作将把通过XMLUtil工具所设置的节点值绑定到UI |
recalculate | 重新对目标模型所有的绑定计算器calculate配置属性 |
revalidate | 该操作将对目标模型中的所有的模型实例进行验证处理(包括readonly、是否必须、是否浏览态、合法性校验等) |
message | 该操作将弹出一个提示信息对话框 |
setValue | 为所选择的模型实例目标节点设置节点内容,该操作执行后,目标数据节点的值将被更新,同时引用目标数据节点的所有控件UI将自动被更新 |
setFocus | 该操作将触发焦点聚焦在目标控件上。 |
toggle | 使用toggle将选择某个case page,也就说toggle操作的目标对象为某个case page。 |
action | action操作可以组合多个其他操作,从而当action的事件满足时,触发action下的每个操作进行执行 |
send | 发送操作将触发某个submission执行。 |
unload | 从目标控件卸载资源,其实就是把目标控件的html元素清空,并且如果目标控件是load动作的容器,则会把subform也销毁 |
load | 加载资源到当前页面,该资源可以是任何的资源,如html或另外一个GForms页面等。 |
setindex | 该操作执行的目标对象为Repeater或Table控件,将选中目标控件的某行,行号从1开始。 |
delete | 删除操作将从数据集合中删除指定位置的记录。 |
insert | 该操作把某些现有节点或目标nodeset的最后一个节点添加到目标nodeset的父节点中 |
dispatch | 用于向目标分发某个具体的事件 |
script | 调用执行javascript,包括javascript原始代码,如alert等,同时也支持调用javascript函数。 |
创建操作后,可以在“属性视图”中配置各个操作的具体配置信息:
具体每个动作的配置请参考“GForms操作”部分具体解释。
配置提示:
l 在模型实例树中配置的动作将作为全局动作,而在控件中所配置的动作则仅仅是针对某个控件的。
l action动作:是一系列动作的集合,所有子动作的事件均与action动作一样。
3、调整动作顺序
在运行时,动作的执行是按顺序进行的,排在前面的将先执行,靠后的后执行,在很多时候,特别是form载入时,需要请求后台数据,而在请求执行可能需要设置一些请求参数,设置数据节点的值有两种方式:
1)为页面配置xforms-init事件,并在事件中通过XML工具设置模型实例相关节点的值。
2)通过标准动作setValue设置数据节点的值,我们推荐使用该方式,但是需要注意setValue动作的位置,应该放在send动作之前:
可以通过动作右键菜单的“上移动作”、“下移动作”实现。
删除组件
在模型实例树中可以删除任何提交、绑定、动作、模型实例及模型:
选择要删除的组件,然后右键菜单中点击“删除”即可删除组件。
产品联系方式
www.ghpaas.com
电话: 13601178468
Email: ghpaas@163.com
产品资料:百度网盘http://yun.baidu.com/s/1bnznec3#dir/path=%2Fghorse