Пытаюсь на форме показать <image>

Здравствуйте.
Jmix version: 2.1.3
Jmix Studio plugin version: 2.1.2-232
IntelliJ version: IntelliJ IDEA 2023.2.5 (Community Edition)

Есть таблица сущностей, хочу при выборе в таблице сущности показывать на форме рисунок, соответствующий этой сущности.
При загрузке показываю (для теста) рисунок для сущности с именем “picture1”.
Подскажите что я не правильно делаю? Тестовый проект прикрепил.
tryToShowImage.zip (3.8 МБ)

Так… а что не так?
image

Так… если вам нужно чтоб image менялся при нажатии на элемент таблицы, то видимо такое не сработает. Ибо у JmixImage нет слушателя на InstanceChangeEvent.

Видимо нужно будет работать без привязки к InstanceContainer, а при клике на элемент самому грузить изображение из FileStorage и ставить в компонент image

1 симпатия

Спасибо. Это я и хотел выяснить)
Может кому пригодится.
Как показать рисунок(image) из файлового хранилища(FileStorage, FileRef) на форме при выборе сущности в таблице:

public void onFaneraCatsDcItemChange(final InstanceContainer.ItemChangeEvent<FaneraCat> event) {
        FaneraCat selectedFanera = event.getItem();
        if (selectedFanera!=null) {
            FileRef fileRef = selectedFanera.getFaneraImage();
            StreamResource streamResource = new StreamResource(fileRef.getFileName(),
                    () -> fileStorage.openStream(fileRef));
            faneraImg.setSrc(streamResource);
        }
    }

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

Верно, сейчас JmixImage не слушает InstanceChangeEvent.
Заведен тикет на исправление - JmixImage doesn't update its value if bound to CollectionContainer and item is changed · Issue #3076 · jmix-framework/jmix · GitHub

В качестве WA, помимо ручной простановки ресурса, можно выполнить обнуление item’ма в InstanceContainer'е, который привязан к JmixImage, непосредственно перед обновлением (перед вызовом load() или ручной простановкой нового item’ма в контейнер).
В вашем примере это будет вызов pictureImageDc.setItem(null); перед pictureImageDl.load();.

Тогда JmixImage обновит значение за счет другого листенера (благодаря которому изображение проставляется в первый раз).

С уважением,
Иван

1 симпатия