3.6.1.3.6. 界面控制器依赖注入
在界面控制器进行依赖注入可以用来请求有效对象的引用。基于这个目的,要求在控制器内声明一个相应类型的字段,或者写一个带有相应参数类型的访问方法(setter),使用下面注解之一:
-
@Inject
– 最简单的方法,会按照 JavaBeans 规则搜索匹配字段/方法类型以及字段名称的对象用来注入。 -
@Named("someName")
– 显示的定义目标对象的名称。
以下类型可以用来注入到控制器:
-
在 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;