3.6.1.3.6. 界面控制器依赖注入
在界面控制器进行依赖注入可以用来请求有效对象的引用。基于这个目的,要求在控制器内声明一个相应类型的字段,或者写一个带有相应参数类型的访问方法(setter),使用下面注解之一:
以下类型可以用来注入到控制器:
在 XML 描述中定义的此界面的可视化组件。如果属性的类型是从
Component
类派生的,系统会搜索当前界面中相应名称的组件。在 XML 描述中定义的操作行为 - 参考 操作以及操作接口。
在 XML 描述中定义的数据源。如果属性的类型是从
Datasource
派生,系统会搜索当前界面中相应名称的数据源。UserSession
。如果属性的类型是 UserSession,系统会注入当前用户会话的对象。DsContext
。如果属性的类型是DsContext
,系统会注入当前界面的DsContext
。WindowContext
。如果属性的类型是WindowContext
,系统会注入当前界面的WindowContext
。DataSupplier
。如果属性的类型是 DataSupplier,系统会注入相应的实例。任何定义在对应客户端 block 上下文的 bean。包括:
客户端引入的 Middleware services
WindowConfig
ExportDisplay
- 如果以上提到的都不合适,并且控制器有友类,如果类型匹配的话当前客户端的友类会被注入。
还可以在控制器内注入传递给 init()
方法的 map 类型的参数,使用 @WindowParam
注解。此注解有 name
属性用来定义参数的名称(map 的键值)以及一个可选的 required
的属性。如果 required = true
并且 map 中没有相应的参数,则会在日志中添加一行 WARNING
的信息。
下面例子注入了传递给控制器 init()
方法的 Job
实体:
@WindowParam(name = "job", required = true)
protected Job job;