settings

settings facet 可以保存和恢复当前用户的可视化组件设置。支持以下组件:

基本用法

当在界面内添加 auto="true" 属性的 settings 时,facet 会自动管理视图内具有标识符的所有支持的组件配置:

<facets>
    <settings auto="true"/>
</facets>

如需管理视图内的特定组件配置,可以用 component 内嵌元素,示例:

<facets>
    <settings>
        <component id="citiesDataGrid"/>
    </settings>
</facets>

如需排除某些组件,可以先设置 auto="true",然后用配置特定组件的 enabled="false"

<facets>
    <settings auto="true">
        <component id="hobbiesDataGrid" enabled="false"/>
    </settings>
</facets>

组件的配置以 JSON 格式保存在主数据存储的 FLOWUI_USER_SETTINGS 表中。可以在 实体探查 中打开 flowui_UserSettingsItem 实体对保存的数据进行管理。

事件和处理器

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

applySettingsDelegate

applySettingsDelegate 在视图的 ReadyEvent 处理方法之前调用。

@ViewComponent
private JmixCheckbox checkbox;

@ViewComponent
private SettingsFacet settings;

@Install(to = "settings", subject = "applySettingsDelegate")
private void settingsApplySettingsDelegate(final SettingsFacet.SettingsContext settingsContext) {
    settings.applySettings();
    Optional<Boolean> value = settingsContext.getViewSettings().getBoolean("checkbox", "value");
    checkbox.setValue(value.orElse(Boolean.FALSE));
}

applyDataLoadingSettingsDelegate

applyDataLoadingSettingsDelegate 在视图的 BeforeShowEvent 处理方法之前调用,并支持恢复与数据加载有关的配置。

saveSettingsDelegate

The saveSettingsDelegate handler 在视图的 DetachEvent 处理方法之前调用。

@ViewComponent
private JmixCheckbox checkbox;

@ViewComponent
private SettingsFacet settings;

@Install(to = "settings", subject = "saveSettingsDelegate")
private void settingsSaveSettingsDelegate(final SettingsFacet.SettingsContext settingsContext) {
    settingsContext.getViewSettings().put("testCheckbox", "value", checkbox.getValue());
    settings.saveSettings();
}