配置
扩展组件安装完成后,需要创建通知类型、配置通知通道以及为用户分配特定角色。
组件提供两个开箱即用的通知通道:一个是在 UI 界面展示通知消息的站内通道,另一个是发送电子邮件的邮件通道。也可以通过创建 bean 实现 NotificationChannel
接口定义自己的通道。
通知类型
扩展组件中默认不带通知类型。可以在应用程序初始化的时候创建一组 NotificationType
的实例并通过 NotificationTypesRepository
注册。下面的代码可以添加至应用程序中的任何一个 bean 内,比如添加至带 @SpringBootApplication
注解的主应用程序类中:
@PostConstruct
public void postConstruct() {
notificationTypesRepository.registerTypes(
new NotificationType("info", "INFO_CIRCLE"), (1)
new NotificationType("warn", "WARNING")
);
}
1 | 使用唯一名称 info 和图标名称 INFO_CIRCLE 创建通知类型。 |
通知类型的本地化信息可以用下面的格式添加:
io.jmix.notifications/NotificationType.<name>=<value>
例如上面示例中的通知:
io.jmix.notifications/NotificationType.info=Info
io.jmix.notifications/NotificationType.warn=Warn
站内通道
为了展示站内通道的消息,需要为界面添加一个通知提示,下面是在带有侧边菜单的主界面添加通知提示的示例:
<window xmlns="http://jmix.io/schema/ui/window"
xmlns:ntf="http://jmix.io/schema/notifications/ui"> (1)
<layout>
<cssLayout id="horizontalWrap"
stylename="jmix-drawer-layout">
<drawer id="drawer" expandOnHover="true">
<!-- ... -->
<ntf:notificationsIndicator id="ntfIndicator"/> (2)
1 | 在根元素声明 notifications 命名空间。 |
2 | 添加一个可视化组件用于展示未读通知的数量。 |
邮件通道
收件人邮件地址从 User 对象的属性某个获取。默认情况下,扩展组件会尝试从 email
属性获取。如需使用其他属性,可以在 application.properties
中定义属性名,示例:
jmix.notifications.user-email-property-name=emailAddress
此外,也可以创建自己的 Spring bean,实现 UserEmailResolver
接口,用于更复杂的用户电子邮件地址获取逻辑,示例:
@Component("sample_GetEmailService")
public class GetEmailService implements UserEmailResolver {
@Nullable
@Override
public String resolveEmail(UserDetails user) {
return user.getUsername() + "@company.com";
}
}
安全角色
如需处理通知,用户需要具有下列角色之一:
-
Notifications: In-app notifications user - 用户可以查看收到的通知。
-
Notifications: administrator - 用户可以查看、创建、并发送通知。
本页是否有帮助?
感谢您的反馈