跳转到内容

行为

代码地址:

trantor-example-action

trantor-example-tree-action

在trantor中,行为分为主要分为三类视图行为(ViewAction)、服务端行为(ServerAction)以及数据加载/处理行为,它们的功能分别是:

  1. ViewAction:定义视图跳转和(如在页面1执行某个操作,跳转到页面2);

  2. 数据Action :业务自己实现为视图加载/处理模型数据,包括(DataActionTreeAction,[ProcessorAction](#ProcessorAction);

  3. ServerAction :接受视图提交的模型数据,用于处理后端逻辑。如模型添加、编辑、删除等功能;

ViewAction

View Action 用于视图间的跳转,主要有三部分信息组成:1. 跳转目标 2. 目标数据来源 3.跳转方式。

描述的是当交互发生时,以某种方式打开所属模型的某个视图,并加载特定数据, 其中, View Action重点在于数据如何获取。详细开发文档见:开发文档ViewAction

// 一个 View Action 的 json 结构如下:(存在于 classpath 下:xxx-actions.json)
{
"key": "allStudents", // action key,模块内唯一
"forModel": "example_action_Student", // 所属模型的全局 key(即 moduleKey_modelKey)
"name": "打开学生列表", // 显示名,可选
"desc": "这是描述信息", // 额外描述信息,可选
"extra": {
"dataSource": "DataStore", // 数据来源类型,可选 DataStore | Static | Action | Empty
"target": "example_action_Student_toList", // 跳转的目标视图,与 targetType 二选一
"targetType": "Detail", // 跳转的目标视图类型,与 target 二选一,可选 List | Detail | Form
"condition": "语法见下", // 当 dataSource == DataStore 时,配置获取数据的 where 条件
"processorActionKey": "获取数据后处理", // 当 dataSource == DataStore 时,可以对获取数据后进行处理
"record": "语法见下", // 当 dataSource == Static 时,配置的模型记录
"actionKey": "DataActionKey", // 当 dataSource == Action 时,配置要调用的 DataAction key
"confirm": "确定执行该操作吗", // 可选,非空时会弹出确认框,确定后才真正执行该 Action
"openViewType": "Self" // 打开视图的方式,v可选,默认为 Self ,其余可选项为 Blank | Dialog | Drawer | Columns
}
}

DataAction

当ViewAction中dataSource参数配置的是Action时,用户通过actionKey实现对应的获取数据DataAction。

DataAction可分为四类,详细开发文档见:开发文档DataAction

  1. 获取单条数据。
  2. 获取可分页的多条数据。

ServerAction

Server Action 用于在前端调用后端逻辑,作用于一个特定的模型。Server Action 的所属模型和入参模型相同,可对某个模型进行添加、编辑、删除等功能,详细开发文档见:开发文档ServerAction

TreeAction

部分数据容器和控件需要树形数据,典型例如Tree、SyncTree 、CascadeList 、CascadeModelSelect 等。这些数据容器在获取数据时需要实现特殊的 TreeDataAction 接口,详细开发文档见:开发文档TreeAction

ProcessorAction

Trantor 支持开发者对通过数据来源获取的数据进行后处理,该特性往往搭配 DataStore 数据来源使用,以便简化自定义数据获取的开发复杂度。方式为实现DataProcessorAction 接口并注册为 SpringBean 即可注册为数据后处理 Action 。

public interface DataProcessorAction<M extends BaseModel> {
Collection<M> process(Collection<M> data);
}

限制:目前不区分单数据和多数据处理,如果对获取单数据的场景处理后产生多条数据,则只会取第一条。