Загрузка изображения в столбец Table

Вам нужно добавить сущности поле типа FileDescriptor, например:

42

Studio в экране редактирования сгенерирует поле типа upload:

<form id="form" dataContainer="newEntityDc">
    <column width="250px">
...
        <upload id="imageField" fileStoragePutMode="IMMEDIATE" property="image" showFileName="true"/>
    </column>
</form>

В экране просмотра необходимо создать генерируемую колонку, как показано в примере выше, например:

@Inject
private UiComponents uiComponents;

@Install(to = "newEntitiesTable.image", subject = "columnGenerator")
private Component newEntitiesTableImageColumnGenerator(NewEntity entity) {
    Image image = uiComponents.create(Image.NAME);
    image.setHeight("40px");
    image.setScaleMode(Image.ScaleMode.SCALE_DOWN);
    image.setSource(FileDescriptorResource.class)
            .setFileDescriptor(entity.getImage());
    return image;
}

Дополнительно можно прочитать следующую статью: https://www.cuba-platform.com/guides/working-with-images

Глеб

В сервере выдает ошибку на newEntitiesTableImageColumnGenerator, что якобы не можете найти @Install target.

Проверьте, что значение параметра to имеет формат <table_id>.<fileDescriptor_attribute_name>.

А где можно посмотреть это?

И подскажите, пожалуйста, как реализовать поиск в окне просмотра не пользуясь фильтром.
Если не трудно, распишите подробно.

id таблицы можно найти в дескрипторе экрана (XML). Имя атрибута Вы придумываете сами, когда создаете сущность.

Добрый вечер
Всё настроено правильно, но ошибка все равно осталась.

Не могли бы Вы приложить демо проект или, хотя бы, код контроллера и дескриптора экрана?

image

image

Вы прислали дескриптор edit экрана и контроллер экрана просмотра. Я так не могу определить, правильно ли вы подключаете генерируемую колонку к таблице. Прикрепите пожалуйста дескриптор и контроллер экрана просмотра.

image

Не могли бы Вы прислать полный дескриптор экрана. И лучше присылать код в виде текста обернутого тройными обратными косыми чертами (```), а не скриншотами, так как это затрудняет работу с ним.

<window xmlns="http://schemas.haulmont.com/cuba/screen/window.xsd"
        caption="msg://browseCaption"
        focusComponent="newEntitiesTable"
        messagesPack="com.company.er.web.screens.newentity">
    <data readOnly="true">
        <collection id="newEntitiesDc"
                    class="com.company.er.entity.NewEntity"
                    view="_local">
            <loader id="newEntitiesDl">
                <query>
                    <![CDATA[select e from er_NewEntity e]]>
                </query>
            </loader>
        </collection>
    </data>
    <dialogMode height="600"
                width="800"/>
    <layout expand="newEntitiesTable"
            spacing="true">
        <filter id="filter"
                applyTo="newEntitiesTable"
                dataLoader="newEntitiesDl">
            <properties include=".*"/>
        </filter>
        <groupTable id="newEntitiesTable"
                    width="100%"
                    dataContainer="newEntitiesDc">
            <actions>
                <action id="create" type="create"/>
                <action id="edit" type="edit"/>
                <action id="remove" type="remove"/>
            </actions>
            <columns>
            </columns>
            <rowsCount/>
            <buttonsPanel id="buttonsPanel"
                          alwaysVisible="true">
                <button id="createBtn" action="newEntitiesTable.create"/>
                <button id="editBtn" action="newEntitiesTable.edit"/>
                <button id="removeBtn" action="newEntitiesTable.remove"/>
            </buttonsPanel>
        </groupTable>
        <hbox id="lookupActions" spacing="true" visible="false">
            <button action="lookupSelectAction"/>
            <button action="lookupCancelAction"/>
        </hbox>
    </layout>
</window>

У вас в таблице нет колонок, соотвественно невозможно добавить генератор для несуществующей колонки.

Я создал колонки, но ошибка осталась

<window xmlns="http://schemas.haulmont.com/cuba/screen/window.xsd"
        caption="msg://browseCaption"
        focusComponent="newEntitiesTable"
        messagesPack="com.company.project.web.screens.newentity">
    <data readOnly="true">
        <collection id="newEntitiesDc"
                    class="com.company.project.entity.NewEntity"
                    view="_local">
            <loader id="newEntitiesDl">
                <query>
                    <![CDATA[select e from project_NewEntity e]]>
                </query>
            </loader>
        </collection>
    </data>
    <dialogMode height="600"
                width="800"/>
    <layout expand="newEntitiesTable"
            spacing="true">
        <filter id="filter"
                applyTo="newEntitiesTable"
                dataLoader="newEntitiesDl">
            <properties include=".*"/>
        </filter>
        <groupTable id="newEntitiesTable"
                    width="100%"
                    dataContainer="newEntitiesDc">
            <actions>
                <action id="create" type="create"/>
                <action id="edit" type="edit"/>
                <action id="remove" type="remove"/>
            </actions>
            <columns>
                <column id="title"/>
                <column id="number"/>
            </columns>
            <rowsCount/>
            <buttonsPanel id="buttonsPanel"
                          alwaysVisible="true">
                <button id="createBtn" action="newEntitiesTable.create"/>
                <button id="editBtn" action="newEntitiesTable.edit"/>
                <button id="removeBtn" action="newEntitiesTable.remove"/>
            </buttonsPanel>
        </groupTable>
        <hbox id="lookupActions" spacing="true" visible="false">
            <button action="lookupSelectAction"/>
            <button action="lookupCancelAction"/>
        </hbox>
    </layout>
</window>

Вы подключаете генератор к колонке image, которой нет.

Все работает. спасибо!
Только, когда я перезахожу на сервер при открытии сущности выдает такую ошибку
IllegalStateException: Cannot get unfetched attribute [image] from detached object com.company.project.entity.NewEntity-c99e9eb0-238f-e04d-8156-385fe0083b56 [detached].

Такие ошибки означают, что вы пытаетесь обратиться к атрибуту сущности, который не включен во view, с которой она грузится.

В быстром старте есть пример создания view для сущности.

Спасибо! Все работает.
Не подскажете, как можно сделать, чтобы эта часть была менее заметна?
image