Что вместо UserSettingService?

Добрый день!
Подскажите, чем заменили в Jmix ‘’‘userSettingService.saveSetting’’’ и ‘’‘userSettingService.loadSetting’’’ из Cuba?

Здравствуйте!

UserSettingService бин есть и в Jmix. Он доступен, если есть зависимость:

implementation 'io.jmix.ui:jmix-ui-data-starter'

Она добавляется по умолчанию при создании нового проекта. Также при наличии данной зависимости можно пользоваться специальным фасетом: ScreenSettingsFacet :: Документация Jmix

Он по умолчанию сохраняет состояния компнентов, которые поддерживают сохранение настроек, если у них указан id.

1 симпатия

Роман, спасибо большое!
Похоже, в документации неточность… В разделе SaveSettings идет отсылка к ApplySettings )
Не получилось разобраться.

Не могли бы вы привести пример кода Сохранения и Восстановления настроек компонента tagPicker? Нужно сохранить и при повторном входе восстановить выбранные ранее теги?

У нас сделано так:

    fun onSaveSettings(screenSettings: ScreenSettings) {
        val tagsValue = tagPicker.value?.joinToString(",") { it.id.toString() }
        val tokenListId = tagPicker.id
        screenSettings.put(tokenListId, "value", tagsValue)
    }

    fun onApplySettings(screenSettings: ScreenSettings) {
        val tokenListId = tagPicker.id
        val tagsValueOptional = screenSettings.getString(tokenListId, "value")
        if (tagsValueOptional.isPresent) {
            val tagsValue = tagsValueOptional.get()
            if (tagsValue.isEmpty()) return
            val tagUuids = tagsValue.split(",").map { UUID.fromString(it) }
            tagsDl.load()
            tagPicker.value = tagsDc.items.filter {
                tagUuids.contains(it.id)
            }
        }
    }
2 симпатии

Примерно можно сделать так:

<facets>
    <screenSettings id="screenSettingsFacet"/>
</facets>
@Autowired
private ScreenSettingsFacet screenSettingsFacet;
@Install(to = "screenSettingsFacet", subject = "saveSettingsDelegate")
private void screenSettingsFacetSaveSettingsDelegate(ScreenSettingsFacet.SettingsContext settingsContext) {
    // получаем теги из TagPicker
    String tags = "somehow_serialized_tags";

    settingsContext.getScreenSettings()
            .put("tagPicker", "tags", tags);

    screenSettingsFacet.saveSettings();
}
@Install(to = "screenSettingsFacet", subject = "applySettingsDelegate")
private void screenSettingsFacetApplySettingsDelegate(ScreenSettingsFacet.SettingsContext settingsContext) {
    String selectedTags = settingsContext.getScreenSettings()
            .getString("tagPicker", "tags")
            .orElse(null);

    // парсим теги и устанавливаем в TagPicker

    // можно удалить, если другие компоненты не должны применять настройки
    screenSettingsFacet.applySettings();
}
1 симпатия

Спасибо, коллеги!