自定义操作类型
在项目中可以新建自定义操作类型或者重载已有的标准操作类型。之后这些自定义的操作可以在应用程序的所有视图中使用,如下面的示例所展示的。
BaseAction
可以创建自定义的操作,然后分配给一个组件。下面是一个简单的示例,点击按钮显示 “Hello”。
-
创建一个操作类,继承自
BaseAction然后添加@ActionType注解,设置操作类型名称:package com.company.onboarding.view.actions; import com.vaadin.flow.component.Component; import io.jmix.flowui.Notifications; import io.jmix.flowui.action.ActionType; import io.jmix.flowui.kit.action.BaseAction; import org.springframework.beans.factory.annotation.Autowired; @ActionType("myAction") public class MyCustomAction extends BaseAction { @Autowired private Notifications notifications; public MyCustomAction(String id) { super(id); setText("Click me!"); } @Override public void actionPerform (Component component) { notifications.create("Hello!") .withType(Notifications.Type.SUCCESS) .show(); } }如果需要重载已有类型,只需要在 @ActionType注解中使用相同的类型名称注册新的操作即可。 -
现在可以在视图中通过指定操作类型使用该操作:
<action id="myAction" type="myAction"/> -
为组件设置新操作:
<button id="actionBtn" action="myAction"/>
ItemsTrackingAction
如果需要一个操作,当表格中的一行或多行选中时,这个操作才启用,请使用 ItemTrackingAction。例如,假设我们需要一个操作用来显示 dataGrid 选中实体的实例名称。请按下面的步骤创建。
-
创建一个操作类添加
@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(); } } } }如果需要重载已有类型,只需要在 @ActionType注解中使用相同的类型名称注册新的操作即可。 -
现在可以在视图描述中通过设置操作类型使用该操作:
<action id="showSelected" type="showSelected"/>
本页是否有帮助?
感谢您的反馈