有自动查找表单的查找页面

在以下位置放一个文件,作为 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源代码可以看到参数长什么样
  • 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 选项将在表头中创建查找字段,并显示表体中的每一条记录的字段。

使用这个链接查看此页面:

http://localhost:8080/vapps/tutorial/FindTutorial

results matching ""

    No results matching ""