打开关联实体
属性
下列参数可以在 XML 或 Java 中设置:
- 
openMode- 查找界面的打开模式,是OpenMode枚举类型的值:NEW_TAB、DIALOG等。默认情况下,RelatedAction用THIS_TAB模式打开查找界面。
- 
screenId- 查找界面的字符串 id。RelatedAction默认会使用带有@PrimaryLookupScreen注解的界面,或标识符为<entity_name>.browse格式的界面,例如,demo_Customer.browse。
- 
screenClass- 查找界面控制器的 Java 类。比screenId有更高的优先级。
- 
property- 实体属性,需要为此属性展示关联实体。
- 
configurationName- 为打开界面的过滤器设置标题。
示例,需要以对话框方式打开一个特定的查找界面,可以在 XML 中这样配置操作:
<action id="related" type="related">
    <properties>
        <property name="property" value="favouriteBrands"/>
        <property name="openMode" value="DIALOG"/>
    </properties>
</action>或者,可以在界面控制器注入该操作,然后用 setter 配置:
@Named("customersTable.related")
private RelatedAction relatedAction;
@Subscribe
public void onInit(InitEvent event) {
    relatedAction.setOpenMode(OpenMode.DIALOG);
    relatedAction.setProperty("favoriteBrands");
}处理器
下面了解这些只能用 Java 配置的参数。用 Studio 能为这些参数正确生成带注解的方法。
screenOptionsSupplier
返回 ScreenOptions 对象,返回值可以传递给打开的查找界面。示例:
@Install(to = "customersTable.related", subject = "screenOptionsSupplier")
private ScreenOptions customersTableRelatedScreenOptionsSupplier() {
    return new MapScreenOptions(ParamsMap.of("someParameter", 10));
}返回的 ScreenOptions 对象可以在打开界面的 InitEvent 中使用。
screenConfigurer
接收查找界面作为参数并能在打开之前初始化界面。示例:
@Install(to = "customersTable.related", subject = "screenConfigurer")
private void customersTableRelatedScreenConfigurer(Screen screen) {
    ((BrandBrowse) screen).setSomeParameter(10);
}注意,界面 configurer 会在界面已经初始化但是还未显示时生效,即在界面的 InitEvent 和 AfterInitEvent 事件之后,但是在 BeforeShowEvent 之前。
使用 ActionPerformedEvent
还可以先订阅 ActionPerformedEvent,但是不调用操作的 execute() 方法,而是使用 RelatedEntitiesBuilder API 直接打开浏览界面。示例:
@Subscribe("customersTable.related")
public void onCustomersTableRelated(Action.ActionPerformedEvent event) {
    RelatedEntitiesBuilder builder = relatedEntitiesSupport.builder(this);
    Screen brandBrowser = builder
            .withMetaClass(metadata.getClass(Customer.class))
            .withProperty("favoriteBrands")
            .withSelectedEntities(customersTable.getSelected())
            .withConfigurationName("See favourite brands")
            .build();
    brandBrowser.show();
}