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 表示当前模型本身。
模型定义如下:
@TModelclass Department extends BaseModel<Long> { @TModelField(name = "部门名称", nullable = false) private String name; @TModelField(name = "上级部门") @RelationMeta(name = "DepartmentParent") private Department parent;}场景二:赋值
record:parent: this, name: "第一个部门"
Empty
顾名思义,该数据来源不关心入参,也不进行任何数据获取动作。