有自动查找表单的查找页面
在以下位置放一个文件,作为 tutorial.xml 页面的子页面,并添加XML页面定义:
runtime/component/tutorial/screen/tutorial/FindTutorial.xml
这里用了在 用户界面 => XML页面 里说的目录结构的实现方式。
<?xml version="1.0" encoding="UTF-8"?>
<screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://moqui.org/xsd/xml-screen-2.1.xsd">
<actions>
<entity-find entity-name="tutorial.Tutorial" list="tutorialList">
<search-form-inputs/>
</entity-find>
</actions>
<widgets>
<form-list name="ListTutorials" list="tutorialList" header-dialog="true" skip-form="true">
<auto-fields-entity entity-name="tutorial.Tutorial" field-type="find-display"/>
</form-list>
</widgets>
</screen>
几个关键点:
- actions.entity-find : 此页面被渲染时执行的动作: entity-find
- 通常使用 entity-find 元素(或在Java API中的EntityFind对象)时需要指定条件、排序字段和其他关于查找的细节
- 在本例中,使用来自于 XML 表单的标准参数来在一个实体上查找,可以使用 search-form-inputs 子元素来自动处理
- 注意 entity-find 元素可以直接放在 form-list 元素下,但它的行为会不一样。
- 不再是默认的选择所有字段,而是基于表单或用户设置中的 select-columns 选项,只选择在form-list中有对应字段(hidden或非hidden)的实体字段。
- 在浏览器中查看XML表单生成的HTML源代码可以看到参数长什么样
- 通常使用 entity-find 元素(或在Java API中的EntityFind对象)时需要指定条件、排序字段和其他关于查找的细节
- widgets.form-list : 这是实际的表单定义,是为展示多条记录/行而特定的“列表”表单(而不是展示一条记录的“single”表单)
- form-list.@name :可以是任意值,只要在XML页面里唯一
- form-list.@list :在 actions 块里的 entity-find 的结果。
- form-list.@header-dialog :设置为true,将增加一个 Find Options 按钮,可以打开一个窗口而不是把查找字段inline在表头内
- form-list.@skip-form :设置为true,因为我们不需要一个 HTML 表单,form-list只是被用来显示,这样可以减少生成的HTML。
- 因为目标是有一个基于实体自动定义的表单,我们使用 auto-fields-entity 元素,元素名为 Tutorial 实体,auto-fields-entity.@field-type 属性的 find-display 选项将在表头中创建查找字段,并显示表体中的每一条记录的字段。
使用这个链接查看此页面: