跳转到内容

ViewAction

ViewAction

一个 View Action 的 json 结构如下:(存在于 classpath 下:xxx-actions.json)

{
"key": "allStudents",
"forModel": "example_action_Student",
"name": "打开学生列表",
"desc": "这是描述信息",
"extra": {
"dataSource": "DataStore",
"target": "example_action_Student_toList",
"targetType": "Detail",
"condition": "语法见下",
"record": "语法见下",
"actionKey": "DataActionKey",
"confirm": "确定执行该操作吗",
"processorActionKey": "获取数据后处理",
"openViewType": "Self"
}
}

| key | 必填 | 解释 | 备注 | | ------------------------ | ---------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | key | 是 | action key ,模块内唯一 | | | forModel | 是 | 所属模型的全局 key(即 moduleKey_modelKey) | | | name | 是 | action 展示名称 | | | desc | 否 | 描述 | | | extra | 是 | action 的额外信息,包括数据获取方式,视图打开方式等信息 | Json 结构 | | extra.dataSource | 是 | 数据来源类型,可选 DataStore | Static | Action | Empty | | | extra.target | 与 targetType 二选一 | 跳转的目标视图 | | | extra.targetType | 与 target 二选一 | 默认视图类型,枚举,可选 List | Detail | Form | 对应视图定义中相同 type,isDefault 为 true,见:开发指南->视图 | | extra.condition | 否,extra.dataSource 为 DataStore 时可选 | 当 dataSource == DataStore 时,配置获取数据的 where 条件 | 如:“condition”: “type == ‘Server’” 表示条件为模型字段为 type,值为 Server | | extra.record | 否,extra.dataSource 为 Static 时可选 | 当 dataSource == Static 时,配置的模型记录 | | | extra.actionKey | 否,extra.dataSource 为 Action 时必填 | 当 dataSource == Action 时,配置要调用的 DataAction key | 详情见:DataAction 开发文档 | | extra.confirm | 否 | 非空时会弹出确认框,确定后才真正执行该 Action | <Action confirm=""/>视图中 Action 标签定义的 confirm 优先级更高 | | extra.processorActionKey | 否 | 通过数据来源获取的数据进行后处理,该特性往往搭配 DataStore 数据来源使用 | 详情见:Action 开发文档 | | extra.openViewType | 否,默认 Self | 视图打开方式,可选 Self | Blank | Dialog | Drawer | MultiTab | Columns | <Action openViewType""/>视图中 Action 标签定义的 openViewType 优先级更高 |

系统内置 ViewAction

trantor 为每个模型默认构建了 ViewAction,用户可不编写 ViewAction,直接使用默认 ViewAction 分别为:

moduleKey_modelKey_toEdit:跳转到默认表单视图

moduleKey_modelKey_listAll:跳转到默认列表视图

moduleKey_modelKey_toDetail:跳转到默认详情视图

dataSource

ViewAction 一个非常重要的定义是数据获取方式,下面详细介绍这四种使用场景。

DataStore

DataStore 类型表示使用默认直接从根据模型从 DB 对应表里获取数据。

允许用户配置 condition,相当于指定数据获取的 where 条件,condition 开发文档见:condition 开发文档

Action

需要用户实现 DataAction 获取数据,详情见:DataAction 开发文档

Static

有的时候我们希望临时获取一条并不真的存在于存储中的模型记录(例如打开一个 Form 并在 Form 中预填入一些字段)。

Record 语法

简单来说就是用逗号连接的 field: value 。其中 value 可以为字面量,也可以是入参中的变量 key 。

Record 支持一个特殊变量 this ,用于指代入参记录本身。关联模型字段必须使用 this 来赋值而不能直接使用 id

场景一:新建子类项目

如,在当前部门下,新增一个下级部门,那么新增的部门需要关联它的上级部门,则可以使用record:parent: this,this 表示当前模型本身。

模型定义如下:

@TModel
class Department extends BaseModel<Long> {
@TModelField(name = "部门名称", nullable = false)
private String name;
@TModelField(name = "上级部门")
@RelationMeta(name = "DepartmentParent")
private Department parent;
}

场景二:赋值

record:parent: this, name: "第一个部门"

Empty

顾名思义,该数据来源不关心入参,也不进行任何数据获取动作。