multiValuePicker 多值选择器

multiValuePicker 可以处理任意类型值的列表。由文本框和一组由操作定义的按钮组成。

如果需要通过操作按钮而不是通过文本框输入的方式编辑值列表,那么使用 multiValuePicker 会比较方便。

  • XML 元素:multiValuePicker

  • Java 类:JmixMultiValuePicker

基本用法

multiValuePicker 的基本用法示例:

<multiValuePicker id="stringsValuesPicker" label="Favourite colors">
    <actions>
        <action id="multiValueSelect" type="multi_value_select">
            <properties>
                <property name="javaClass" value="java.lang.String"/>
            </properties>
        </action>
        <action id="valueClear" type="value_clear"/>
    </actions>
</multiValuePicker>

当用户点击选择按钮时,会展示 Select Value(选择值) 界面。用户可以在这个界面新建值或者从值列表中添加/删除。用户可以点击 Add(添加) 按钮或按下 Enter 添加值。

multi value picker

操作

可以给 multiValuePicker 配置自定义或预定义的操作,作为按钮显示在右侧。 定义操作可以用 XML 中用内部的 actions 元素或者在控制器中用 addAction() 方法编程式添加。

如需在 Jmix Studio 中添加 action,可以在界面 XML 或者 Jmix UI 层级结构面板中选择组件,然后点击组件面板的 Add 按钮。

预定义操作

框架提供了 value_clearmulti_value_select 预定义操作。

multi_value_select 操作使用一个值选择界面为 multiValuePicker 设置值。值选择界面会生成一个特定的组件用于选择值,或者根据传入的值类型创建值。

multi_value_select 操作可用来选择任意类型的值,示例:

  • 选择特定的 Java 类型,例如,StringIntegerLongDoubleBigDecimalDateLocalDateLocalTimeLocalDateTimeOffsetTimeOffsetDateTimeDateTimeUUID 以及 java.sql.Datejava.sql.Time

    javaClass 属性设置选择值的 Java 类型。

    上面 的示例中,multi_value_select 操作使用了 java.lang.String Java 类型。

  • 选择 枚举

    enumClass 属性设置选择值的枚举类型。

    <multiValuePicker id="enumValuesPicker" label="Onboarding statuses">
        <actions>
            <action id="multiValueSelect" type="multi_value_select">
                <properties>
                    <property name="enumClass"
                              value="com.company.onboarding.entity.OnboardingStatus"/>
                </properties>
            </action>
            <action id="valueClear" type="value_clear"/>
        </actions>
    </multiValuePicker>

    对于枚举值,Select Value(选择值) 界面会生成 comboBox

  • 选择 实体 实例

    entityName 属性设置选择值的实体名称。

    <multiValuePicker id="entityValuesPicker" label="Departments">
        <actions>
            <action id="multiValueSelect" type="multi_value_select">
                <properties>
                    <property name="entityName" value="Department"/>
                    <property name="useComboBox" value="true"/>
                </properties>
            </action>
            <action id="valueClear" type="value_clear"/>
        </actions>
    </multiValuePicker>

    useComboBox 属性指定在值选择界面中是否用 entityComboBox。默认为 false

自定义操作

multiValuePicker 的自定义操作与 valuePicker自定义操作 类似。

事件和处理器

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。

XML 内部元素