自定义操作类型

在项目中可以新建自定义操作类型或者重载已有的标准操作类型。

例如,假设需要一个操作显示 dataGrid 中当前选中实体的实例名称。你还希望该操作能在多个视图中仅通过指定操作的类型进行使用。按照下面的步骤创建这种操作:

  1. 创建一个操作类添加 @ActionType 注解,指定需要的操作类型:

    package com.company.onboarding.view.actions;
    
    import com.vaadin.flow.component.Component;
    import io.jmix.core.MetadataTools;
    import io.jmix.flowui.Notifications;
    import io.jmix.flowui.action.ActionType;
    import io.jmix.flowui.action.list.ItemTrackingAction;
    import org.springframework.beans.factory.annotation.Autowired;
    
    @ActionType("showSelected")
    public class ShowSelectedAction<E> extends ItemTrackingAction<E> {
    
        @Autowired
        private MetadataTools metadataTools;
    
        @Autowired
        private Notifications notifications;
    
        public ShowSelectedAction(String id) {
            super(id);
            setText("Show Selected");
        }
    
        @Override
        public void actionPerform(Component component) {
            if (getTarget() != null) {
                E selected = getTarget().getSingleSelectedItem();
                if (selected != null) {
                    notifications.create(metadataTools.getInstanceName(selected)).show();
                }
            }
        }
    }
  2. 现在可以在视图描述中通过设置操作类型使用该操作:

    <action id="showSelected" type="showSelected"/>

如果需要重载已有类型,只需要使用相同的名称注册新的操作即可。