Быстрое переключение между записями

Глеб, спасибо!
Попробуем.
Подскажите, пожалуйста, мне переопределенный класс как-то нужно пометить? (аннотацией, или внести в какой-нибудь XML)

Добрый день, @alex2910sk!

Вам нужно выполнить несколько шагов, чтобы переопределить метод в виджете:

  1. Добавить web-toolkit модуль
  2. Создать наследника CubaDateFieldWidget, в котором переопределить метод buildDate()
package com.company.sample.web.toolkit.ui.customdatefield;

import com.haulmont.cuba.web.widgets.client.datefield.CubaDateFieldWidget;

public class CustomCubaDateFieldWidget extends CubaDateFieldWidget {

    @Override
    public void buildDate() {
        // Save previous value
        String previousValue = getText();
        super.buildDate();

        // Restore previous value if the input could not be parsed
        if (!parsable) {
            setText(previousValue);
        }
        updateTextFieldEnabled();
        bufferedDateString = text.getText();
        updateBufferedResolutions();
        // send the Time changes.
        sendBufferedValues();

        updateTextState();
    }
}
  1. Заменить CubaDateFieldWidgetна CustomCubaDateFieldWidget в AppWidgetSet.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<module>

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

    <replace-with class="com.company.sample.web.toolkit.ui.customdatefield.CustomCubaDateFieldWidget">
        <when-type-is class="com.haulmont.cuba.web.widgets.client.datefield.CubaDateFieldWidget"/>
    </replace-with>
</module>

С уважением,
Глеб

1 симпатия

Глеб, Добрый день!

Наконец выбил время, чтобы проверить текущий вариант.
У меня возникает проблема при попытке собрать модуль web-toolkit (пустой, только что добавленный).
Пробовал менять его название, сокращать путь к конечному пакету с классами, но ничего не получается.

Подскажите, может сталкивались, как решить эту проблему?
image

Добрый день, @alex2910sk!

Попробуйте решение, описанное в следующем тикете.
Также можете попробовать мигрировать проект на gradle 6.1, там данная проблема исправлена.
Как временное решение можете попробовать сократить путь до jre от корня, сократить путь до gradle от корня или создать системную переменную GRADLE_USER_HOME C:\gradle-caches.

С уважением,
Глеб

1 симпатия

Добрый день!
Попробовал установить новую версию Gradle, через несколько устраненных ошибок запнулся на еще одной:
image

Пробовал переустанавливать JDK, делал ребилд с включенной настройкой чистки кеша в Idea, но пока ничего не помогает.
Причем запинается опять на этом же таске.
Подскажите, есть ли решение у этой проблемы…?

Подскажите, пожалуйста, в чем здесь может быть беда?

Добрый день,
В документацию добавлено подробное описание, как можно исключить ненужные для web-toolkit зависимости и избавиться от “error=206” без обновления версии Gradle:

https://doc.cuba-platform.com/manual-7.2-ru/widgetset_win_path_too_long.html

1 симпатия

Добрый день.
Я поэтапно проделала все манипуляции, описанные в инструкции под версией gradle 5.6.4-all.
Сначала я наблюдал ошибку 206, но после исключения транзитивных зависимостей модуля web-toolkit 206 ошибка пропала, теперь у меня возникает эксепшен при сборке:
Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_261\bin\java.exe'' finished with non-zero exit value 1
Этот же эксепшен у меня возникал и ранее после того, когда я попытался собрать версию под gradle 6.1-all и gradle 6.6.1-all. При этом 206 ошибка не возникала.

Без установленного модуля web-toolkit ошибок не возникает.

Приложил ответ. Кстати, почему то когда я отвечаю на чей-то ответ у меня не всегда отображается вот это
image .
И поэтому я не до конца понимаю, получили ли вы мой ответ, или он просто прикрепился к посту без уведомления и прочего…

В том сообщении, которое вы копируете, нет никаких деталей и по нему невозможно ничего посоветовать.

Запускайте сборку в консоли с флагом --stacktrace:

gradlew deploy --stacktrace > build.log

Тогда будет детальное сообщение об ошибке (почему java.exe не запустилась), которое можно будет разбирать.

Для версии 5.6.4:

Task :app-core:assembleDbScripts UP-TO-DATE
Task :app-core:dbScriptsArchive UP-TO-DATE
Task :app-core:beansXml UP-TO-DATE
Task :app-global:beansXml UP-TO-DATE
Task :app-global:processResources UP-TO-DATE
Task :app-global:buildInfo UP-TO-DATE
Task :app-global:compileJava UP-TO-DATE
Task :app-global:classes UP-TO-DATE
Task :app-global:jar UP-TO-DATE
Task :app-core:compileJava UP-TO-DATE
Task :app-core:processResources UP-TO-DATE
Task :app-core:classes UP-TO-DATE
Task :app-core:jar UP-TO-DATE
Task :app-core:sourceJar UP-TO-DATE
Task :app-core:assemble UP-TO-DATE
Task :app-core:cleanConf UP-TO-DATE
Task :app-core:deploy
Task :app-web:buildScssThemes UP-TO-DATE
Task :app-web:beansXml UP-TO-DATE
Task :app-web:compileJava UP-TO-DATE
Task :app-web:processResources UP-TO-DATE
Task :app-web:classes UP-TO-DATE
Task :app-web:jar UP-TO-DATE
Task :app-web:sourceJar UP-TO-DATE
Task :app-web:themesJar UP-TO-DATE
Task :app-web:webArchive UP-TO-DATE
Task :app-web:assemble UP-TO-DATE
Task :app-web:cleanConf UP-TO-DATE
Task :app-web:deploy
Task :app-web-toolkit:compileJava NO-SOURCE
Task :app-web-toolkit:processResources UP-TO-DATE
Task :app-web-toolkit:classes UP-TO-DATE
Task :app-web-toolkit:buildWidgetSet
Loading inherited module ‘com.company.itam.web.toolkit.ui.AppWidgetSet’
Loading inherited module ‘com.haulmont.charts.web.widgets.ChartsWidgetSet’
[ERROR] Unable to find ‘com/haulmont/charts/web/widgets/ChartsWidgetSet.gwt.xml’ on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?
Task :app-web-toolkit:buildWidgetSet FAILED
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use ‘–warning-mode all’ to show the individual deprecation warnings.
See https://docs.gradle.org/5.6.4/userguide/command_line_interface.html#sec:command_line_warnings
26 actionable tasks: 3 executed, 23 up-to-date

Для версии 6.6.1:

Task :app-core:assembleDbScripts UP-TO-DATE
Task :app-core:dbScriptsArchive UP-TO-DATE
Task :app-core:beansXml UP-TO-DATE
Task :app-global:beansXml UP-TO-DATE
Task :app-global:processResources UP-TO-DATE
Task :app-global:buildInfo UP-TO-DATE
Task :app-global:compileJava UP-TO-DATE
Task :app-global:classes UP-TO-DATE
Task :app-global:jar UP-TO-DATE
Task :app-core:compileJava UP-TO-DATE
Task :app-core:processResources UP-TO-DATE
Task :app-core:classes UP-TO-DATE
Task :app-core:jar UP-TO-DATE
Task :app-core:sourceJar UP-TO-DATE
Task :app-core:assemble UP-TO-DATE
Task :app-core:cleanConf UP-TO-DATE
Task :app-core:deploy
Task :app-web:buildScssThemes UP-TO-DATE
Task :app-web:beansXml UP-TO-DATE
Task :app-web:compileJava UP-TO-DATE
Task :app-web:processResources UP-TO-DATE
Task :app-web:classes UP-TO-DATE
Task :app-web:jar UP-TO-DATE
Task :app-web:sourceJar UP-TO-DATE
Task :app-web:themesJar UP-TO-DATE
Task :app-web:webArchive UP-TO-DATE
Task :app-web:assemble UP-TO-DATE
Task :app-web:cleanConf UP-TO-DATE
Task :app-web:deploy
Task :app-web-toolkit:compileJava NO-SOURCE
Task :app-web-toolkit:processResources UP-TO-DATE
Task :app-web-toolkit:classes UP-TO-DATE
Task :app-web-toolkit:buildWidgetSet FAILED
Compiling module com.company.itam.web.toolkit.ui.AppWidgetSet
[ERROR] Hint: Check that your module inherits ‘com.google.gwt.core.Core’ either directly or indirectly (most often by inheriting module ‘com.google.gwt.user.User’)
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use ‘–warning-mode all’ to show the individual deprecation warnings.
See https://docs.gradle.org/6.6.1/userguide/command_line_interface.html#sec:command_line_warnings
26 actionable tasks: 3 executed, 23 up-to-date

Для версии 6.6.1 я включил следующие наследование в AppWidgetSet.gwt.xml

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

    <inherits name="com.google.gwt.core.Core" />
    <inherits name="com.google.gwt.user.User" />
    <inherits name="com.haulmont.cuba.web.widgets.WidgetSet" />
    <inherits name="com.haulmont.charts.web.widgets.ChartsWidgetSet" />
</module>

Ошибка сохраняется.

Сможете помочь с одной из вышеперечисленных?

Первая ошибка

Не может быть найден ‘com/haulmont/charts/web/widgets/ChartsWidgetSet.gwt.xml’
Возможно вы удалили в проекте зависимость от аддона charts, но не удалили запись в widgetset.gwt.xml. Или аддон как-то неверно подключен, или артефакты не удается скачать, что-то в этом роде.

Попробуйте создать пустой проект, добавить туда аддон Charts и создать модуль app-web-toolkit,
тогда виджетсет будет успешно собираться?

1 симпатия

Проверил, ошибка возникала, потому что я отключил транзитивную зависимость от аддона Charts в gradle.
Теперь попробую переопределить классы и сообщу о результате.

Переопределил класс, попытался перезапустить приложение.
теперь поймал:

Compiling module com.company.itam.web.toolkit.ui.AppWidgetSet
   [ERROR] Could not find com.company.itam.web.toolkit.ui.webcomponents.ExtDateFieldWidget in types compiled from source. Is the source glob too strict?
   [ERROR] Errors in 'gen/com/vaadin/client/metadata/ConnectorBundleLoaderImpl.java'
      [ERROR] Line 866: Rebind result 'com.company.itam.web.toolkit.ui.webcomponents.ExtDateFieldWidget' could not be found

Содержание класса и xml на скринах, как и рекомендовалось Глебом вышел:
image

image

Нашел следующее руководство, но не знаю, насколько оно уместно к моей ситуации, так как я переопределяю текущий компонент, а не создаю новый.
https://doc.cuba-platform.com/manual-latest-ru/gwt_component_sample.html

Добрый день, @alex2910sk!

Попробуйте сделать корневой папкой папку с именем client. Тогда путь к файлу будет выглядеть подобным образом: com.company.itam.web.toolkit.ui.client.webcomponents.ExtDateFieldWidget. У меня на чистом тестовом проекте этот шаг помог решить проблему с компиляцией.

С уважением,
Глеб

Добрый день!
Спасибо, позже попробую и отпишусь.

Добрый день!
Возникает та же ошибка:

image

image

image

Мне нужно переносить AppWidgetSet в пакет client?

Добрый день, @alex2910sk!

Нет, AppWidgetSet.gwt.xml переносить в пакет client не нужно.

А вы пробовали сделать clean, undeploy проекта?

Прикладываю тестовый проект (228.1 КБ) , на котором сборка виджетсета проходит успешно.

С уважением,
Глеб

1 симпатия

Добрый день!

Сделал clean и undeploy в указанном вами порядке - не помогло.
При переходе по ссылке тестового проекта выдает ошибку:

Ой! Эта страница не существует или скрыта от публичного просмотра.

@alex2910sk,
custom-datefield-widget.zip (228.1 КБ)