3.5.5.2.2. 选择器组件操作

框架为 PickerFieldLookupPickerFieldSearchPickerField组件提供了一系列标准操作。

在选择器组件中使用标准操作的示例:

<pickerField id="userPickerField" dataContainer="employeeDc" property="user">
    <actions>
        <action id="lookup" type="picker_lookup"/>
        <action id="open" type="picker_open"/>
        <action id="clear" type="picker_clear"/>
    </actions>
</pickerField>

标准选择器组件操作包括以下类型:

  • picker_lookup - 类型由 com.haulmont.cuba.gui.actions.picker.LookupAction 类实现。它被设计用于从查找界面中选择实体实例并将其设置到选择器字段中。

  • picker_open - 类型由 com.haulmont.cuba.gui.actions.picker.OpenAction 类实现。它被设计用于为选择器字段中当前选定的实体打开编辑界面。

  • picker_clear - 类型由 com.haulmont.cuba.gui.actions.picker.ClearAction 类实现。它被设计用于清空选择器。

标准操作为基本参数(标题、图标和快捷方键)提供默认值和默认的执行行为。可以为 XML 中的基本参数提供特定的值,就像其它任何操作一样。例如,可以指定自定义图标:

<action id="open" type="picker_open" icon="USER"/>

要自定义执行行为,应该订阅操作的 ActionPerformedEvent。如果提供了自己的操作监听器,则所有标准操作都不会执行。这意味着 ActionPerformedEvent 处理器已经覆盖了默认的操作行为。

例如,以下代码覆盖了默认的 picker_lookup 操作行为,使用以模式对话框模式打开的特定界面选择 User 实体:

public class CustomerBrowse extends StandardLookup<Customer> {
    @Inject
    private ScreenBuilders screenBuilders;
    @Inject
    private PickerField<User> userPickerField;

    @Subscribe("userPickerField.lookup")
    protected void onUserPickerFieldLookupActionPerformed(Action.ActionPerformedEvent event) {
        screenBuilders.lookup(User.class, this)
                .withField(userPickerField)
                .withScreenClass(UserBrowser.class) // specific lookup screen
                .withLaunchMode(OpenMode.DIALOG)    // open as modal dialog
                .build()
                .show();
    }

有关更多详细信息,请参阅 ScreenBuilders bean 描述。