NotificationFacet

NotificationFacet facet 支持预配置一个 通知。用声明式的定义替代 Notifications.create() 方法。

组件的 XML 名称:notification

属性

NotificationFacet 在界面 XML 描述的 facets 元素中定义,有下列属性:

NotificationFacet 可以绑定至 actionbutton。此时,当触发 action 或点击 button 时,会展示通知消息。要使用 actionbutton 触发 NotificationFacet,可以使用下列属性:

  • onAction

<window xmlns="http://jmix.io/schema/ui/window"
        caption="msg://notificationFacetScreen.caption">
    <actions>
        <action id="facetAction"
                caption="Action subscription"/>
    </actions>
    <facets>
        <notification id="actionNotification"
                      caption="Action performed"
                      type="TRAY"
                      onAction="facetAction"/>
    </facets>
    <layout>
    </layout>
</window>
  • onButton

<window xmlns="http://jmix.io/schema/ui/window"
        caption="msg://notificationFacetScreen.caption">
    <facets>
        <notification id="buttonNotification"
                      caption="Button clicked"
                      type="HUMANIZED"
                      onButton="facetBtn"/>
    </facets>
    <layout>
        <button id="facetBtn"
                caption="Button subscription"/>
    </layout>
</window>

NotificationFacet 配置的通知消息也可以使用 show() 方法展示:

@Autowired
private NotificationFacet notificationFacet;

@Subscribe("btn")
public void onBtnClick(Button.ClickEvent event) {
    notificationFacet.show();
}

事件和处理器

如需使用 Jmix Studio 生成处理器的桩代码,需要在界面 XML 描述或者 Component Hierarchy 面板选中 facet 元素,然后用 Component Inspector 面板的 Handlers 标签页生成。

或者可以使用界面控制器顶部面板的 Generate Handler 按钮。

CloseEvent

CloseEvent 支持处理通知的关闭事件。示例:

private static final Logger log = LoggerFactory.getLogger(NotificationFacetScreen.class);

@Subscribe("actionNotification")
public void onActionNotificationClose(Notifications.CloseEvent event) {
    log.info("Notification was closed");
}

如需以编程的方式注册事件处理器,使用 addCloseListener() 方法。

CaptionProvider

如需修改通知消息的标题,可使用 NotificationFacetCaptionProvider

@Install(to = "actionNotification", subject = "captionProvider")
private String actionNotificationCaptionProvider() {
    return "Changed caption";
}

编程式用法,调用组件的 setCaptionProvider() 方法。

DescriptionProvider

如需修改通知消息的描述信息,可使用 NotificationFacetDescriptionProvider

@Install(to = "actionNotification", subject = "descriptionProvider")
private String actionNotificationDescriptionProvider() {
    return "Changed description";
}

编程式用法,调用组件的 setDescriptionProvider() 方法。

XML 属性

可以在 Studio 界面设计器中的 Component Inspector 面板查看和编辑 facet 支持的属性。