窗口动作ViewAction
大约 5 分钟
窗口动作ViewAction
创建窗口属性解释
方法一 使用注解的方式创建
@UxRouteButton
@UxRouteButton(action = @UxAction(),value = @UxRoute())
这是一个自定义注解 UxRouteButton
的定义,具有以下属性:
action
: 返回UxAction
类型的配置,用于定义动作的基本配置。value
: 返回UxRoute
类型的配置,用于定义窗口动作的配置。
这个注解可以用于类级别,用于声明一个路由按钮,指定了动作的基本配置和窗口动作的配置。
@UxAction
@UxAction(name = "",
label = "",
contextType = ActionContextTypeEnum.SINGLE,
bindingType = ViewTypeEnum.FORM)
这段代码定义了一个名为 UxAction
的注解,用于配置动作的基本信息,具有以下属性:
name
: 指定动作的名称。displayName
: 设置动作的展示名称,默认为空。label
: 指定动作的显示文字,默认为空。summary
: 设置动作的描述信息,默认为空。contextType
: 指定动作的上下文类型,默认为单个对象的上下文。bindingType
: 表示动作绑定在源模型的哪些视图上,默认为 TABLE 视图。invisible
: 设置动作的客户端显隐表达式,默认为空。rule
: 指定动作的服务端过滤表达式,默认为空。disable
: 设置动作的禁用规则,默认为空。bindingView
: 绑定特定视图,设置动作只出现在指定视图,默认为空。priority
: 设置动作的优先级,默认为99。props
: 扩展属性,用于定义动作的额外属性,默认为空。
这个注解可以用于局部变量,用于配置动作的基本信息。
@UxRoute
@UxRoute(
value ="",
model = "",
viewName = "",
viewType = ViewTypeEnum.TABLE,
openType = ActionTargetEnum.ROUTER,
module = "",
title = "",
theme = "",
mask = "",
views = {},
queryMode = QueryModeEnum.DOMAIN,
load = "",
mapping = {},
context = {},
domain = "",
filter = "",
limit = 20
)
这这段代码定义了一个名为 UxRoute
的注解,用于描述窗口动作的配置信息。该注解具有以下属性:
value
/model
: 目标模型编码,指定窗口动作要操作的模型。viewName
: 指定目标视图的名称,默认为空,表示使用默认视图。viewType
: 视图类型,默认为TABLE
。openType
: 打开方式,默认为ROUTER
。module
: 目标模块编码。title
: 页面标题,默认为空。theme
: 主题,默认为空。mask
: 母版,默认为空。views
: 支持可供切换的视图类型列表,默认为空。queryMode
: 数据加载方式,默认为DOMAIN
。load
: 数据加载函数编码,默认为空。mapping
: 数据传输映射DSL,默认为空。context
: 上下文,默认为空。domain
: 数据过滤-客户端,默认为空。filter
: 数据过滤-服务端,默认为空。limit
: 初始化页面数据数量限制,默认为 20。
这个注解可以应用于类,用于标识链接动作及其相关配置。
@UxClientButton.UxClientButtons
@UxClientButton.UxClientButtons(value ={})
这段代码定义了一个名为 UxClientButtons
的注解,用于配置按钮的列表,具有以下属性:
value
: 按钮配置数组,用于指定按钮的配置列表。
这个注解可以应用于类,用于表示一组按钮配置。
方法二 使用继承MetaDataEditor 方式创建
createViewAction参数详解(建议更换为注解方式)
name
: 技术名称,唯一建要求displayName
: 展示名称originModel
: ViewAction的绑定模型originViewTypes
: ViewAction在绑定模型的哪些视图类型上展示targetModel
: ViewAction跳转到的目标模型targetViewType
: ViewAction跳转到的目标模型的什么类型视图contextType
: ViewAction在绑定模型视图上设置展示的动作上下文类型。包括以下选项:- SINGLE(默认)——单行,常用于列表页(展示在每行末尾的操作栏中)和表单页(展示在页面上方)
- BATCH——多行,常用于列表页(展示在表格上方按钮区)
- SINGLE_AND_BATCH——单行或多行,常用于列表页(展示在表格上方按钮区)
- CONTEXT_FREE——上下文无关,常用于列表页(展示在表格上方按钮区)
pageTarget
: 页面打开方式,包括以下选项:- ROUTER:页面路由
- DIALOG:页面弹窗
- OPEN_WINDOW:打开新窗口
- DRAWER:打开抽屉
- `resViewName``: ViewAction跳转到的目标模型的指定视图的名称,该视图的类型需要跟targetViewType一致
title
: 页面标题
以下是非createViewAction参数,但是ViewAction有的参数,createViewAction以后可以通过setXX方法来设置:
priority
: 展示顺序bindingView
: 绑定特定视图invisible
: 隐藏规则load
: 对于特殊模型的窗口动作进行定制化的加载方式filter
: 代表后端过滤,是一定会加上的过滤条件,用户无感知
使用注解方式创建窗口动作
- 使用
@Model.model(PetShopProxy.MODEL_MODEL)
表示该类属于PetShopProxy
模型。 - 使用
@UxRoute.model
表示视图动作的目标模型。
@Model.model(PetShopProxy.MODEL_MODEL)
@UxRouteButton(action =
@UxAction(name = "demo_petShop_batch_update", label = "批量更新数据状态",contextType = ActionContextTypeEnum.SINGLE_AND_BATCH),
value = @UxRoute(model = PetShopBatchUpdate.MODEL_MODEL, viewType = ViewTypeEnum.FORM,openType = ActionTargetEnum.DIALOG)
)
@Component
public class PetShopProxyAction extends DataStatusBehavior<PetShopProxy> {}
private void viewActionInit(InitializationUtil util){
util.createViewAction("demo_petShop_batch_update","批量更新数据状态", PetShopProxy.MODEL_MODEL,
InitializationUtil.getOptions(ViewTypeEnum.TABLE), PetShopBatchUpdate.MODEL_MODEL,ViewTypeEnum.FORM, ActionContextTypeEnum.SINGLE_AND_BATCH, ActionTargetEnum.DIALOG,null,null);
}
使用 createViewAction 创建窗口动作
继承 MetaDataEditor
并实现了 edit
接口:
command
:表示应用生命周期的命令对象,用于控制应用的生命周期。您可以根据命令对象中的信息执行相应的操作。metaMap
:表示元数据的映射,其中键为字符串类型,表示元数据的标识符,值为Meta
对象,表示对应的元数据信息。通过元数据映射,您可以获取并处理应用程序中的元数据信息。
package pro.shushi.pamirs.demo.core.init;
...//import
@Component
public class DemoModuleMetaDataEditor implements MetaDataEditor {
@Override
public void edit(AppLifecycleCommand command, Map<String, Meta> metaMap) {
InitializationUtil util = InitializationUtil.get(metaMap, DemoModule.MODULE_MODULE,DemoModule.MODULE_NAME);
if(util==null){
return;
}
viewActionInit(util);
}
private void viewActionInit(InitializationUtil util){
util.createViewAction("demo_petShop_batch_update","批量更新数据状态", PetShopProxy.MODEL_MODEL,
InitializationUtil.getOptions(ViewTypeEnum.TABLE), PetShopBatchUpdate.MODEL_MODEL,ViewTypeEnum.FORM, ActionContextTypeEnum.SINGLE_AND_BATCH
, ActionTargetEnum.DIALOG,null,null);
}
}