Проблемы при расширении web-toolkit

В разделе приведены сведения для диагностики и устранения проблем, связанных с расширением модуля web-toolkit. Рекомендации следует применять с учетом версии IDE, проекта и используемых компонентов ТЕЗИС.

Проблема связана с тем, что при создании модуля web-toolkit через THESIS Studio набор виджетов ТЕЗИС не добавляется в дескриптор GWT-модуля. Дескриптор имеет расширение .gwt.xml и располагается в каталоге:

modules/web-toolkit/src/<root package>/web/toolkit/ui

Важно!
Данная проблема исправлена в THESIS Studio версии 2.0.

Пример стандартного файла AppWidgetSet.gwt.xml:

<?xml version="1.0" encoding="UTF-8"?>

<module>
    <inherits name="com.haulmont.cuba.web.widgets.WidgetSet" />
    <inherits name="com.haulmont.charts.web.widgets.ChartsWidgetSet" />

    <!-- project add-ons, replacements, properties and so on  -->
</module>

Для устранения проблемы необходимо подключить набор виджетов ТЕЗИС. Наборы виджетов CUBA и компонента Charts подключать не требуется, так как они используются набором виджетов ТЕЗИС.

Пример корректного файла:

<?xml version="1.0" encoding="UTF-8"?>

<module>
    <inherits name="com.haulmont.thesis.web.toolkit.ui.ThesisWidgetset"/>

    <!-- project add-ons, replacements, properties and so on  -->
</module>

Набор виджетов проекта не используется или при открытии страницы ТЕЗИС возникает ошибка

Пример ошибки:

Проблема связана с тем, что при инициализации сервлета жестко задано использование набора виджетов ТЕЗИС. В зависимости от того, развернут ли ThesisWidgetset в Tomcat, набор виджетов проекта может не использоваться либо может возникнуть ошибка при открытии страницы ТЕЗИС.

Важно!
Данная ошибка исправлена в версии ТЕЗИС 5.2.2 (TS-17651). Код, добавленный для обхода этой проблемы, можно удалить после перехода на указанную или более позднюю версию.

Для исправления ошибки на уровне проекта необходимо переопределить бин com.haulmont.thesis.web.sys.ThesisWebServletsInitializer в модуле web и изменить реализацию метода getMainServletInitParams, чтобы он возвращал Map параметров без параметра widgetset.

Пример:

package com.haulmont.thesis.testproject.web.sys;

import com.haulmont.thesis.web.sys.ThesisWebServletsInitializer;
import org.apache.groovy.util.Maps;
import org.atmosphere.cpr.ApplicationConfig;

import java.util.Map;

public class TestProjectServletsInitializer extends ThesisWebServletsInitializer {
    @Override
    protected Map<String, String> getMainServletInitParams() {
        return Maps.of(ApplicationConfig.WEBSOCKET_SUPPORT_SERVLET3, "true");
    }
}

После этого необходимо добавить бин в конфигурационный файл Spring модуля web.

Пример:

<bean id="thesis_WebServletsInitializer" class="com.haulmont.thesis.testproject.web.sys.TestProjectSer

В Tomcat развертывается набор виджетов ТЕЗИС

В сборке проекта в каталоге deploy/tomcat/webapps/app/VAADIN/widgetsets может находиться набор виджетов ТЕЗИС:

com.haulmont.thesis.web.toolkit.ui.ThesisWidgetset

Важно!
Данная ситуация будет исправлена в последующих версиях ТЕЗИС.

Фактически этот каталог не используется, так как применяемый набор виджетов определяется свойством веб-слоя cuba.web.widgetSet. Начиная с CUBA 7.2 набор виджетов проекта упаковывается в JAR-файл вида:

app-web-toolkit-<version>-client.jar

Файл помещается в каталог:

deploy/tomcat/webapps/app/WEB-INF/lib

После сборки каталог с набором виджетов ТЕЗИС можно удалить:

deploy/tomcat/webapps/app/VAADIN/widgetsets/com.haulmont.thesis.web.toolkit.ui.ThesisWidgetset