Фильтр не учитывает datatype

Здравствуйте. Такая проблема. У сущности есть поле var maxLifetime: Long? = null отображает какой-то период времени в миллисекундах. Сделали datatype:

class DurationDatatype : Datatype<Long?> {

    private val formatter: PeriodFormatter = PeriodFormatterBuilder()
        .appendDays().appendSuffix("д")
        .appendHours().appendSuffix("ч")
        .appendMinutes().appendSuffix("м")
        .appendSeconds().appendSuffix("с")
//        .appendMillis().appendSuffix("мс")
        .toFormatter()

    override fun format(value: Any?): String {
        return when (value) {
            is Long -> {
                formatter.print(Period(value).normalizedStandard(PeriodType.dayTime()))
            }
            else -> value?.toString() ?: ""
        }
    }

    override fun format(value: Any?, locale: Locale) = format(value)

    override fun parse(value: String?): Long? {
        if (value.isNullOrBlank()) return null
        try {
            return formatter.parsePeriod(value).toStandardDuration().millis
        } catch (e: IllegalArgumentException) {
            throw ParseException(e.message, 0)
        }
    }

    override fun parse(value: String?, locale: Locale) = parse(value)

}

Добавили его metadata и полю сущности добавили @MetaProperty(datatype = "duration"). Все замечательно работает. При вводе в редакторе в поле сохраняется значение в 60000 и тд. В таблице тоже выводится значения согласно datatype.

Однако при использовании фильтра тот выдает ошибку о неверном формате числа. Не могли бы вы подсказать что не так и как это можно исправить?

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

Screenshot_6

demo.7z (72.5 КБ)

Проблема заключается в том, что при создании поля фильтра используется тип из аннотации @JavaClass, а необходимо использовать кастомный тип.

Я предлагаю расширить Param класс и переиспользовать createDatatypeField метод следующим образом:

public class ParamExt extends Param {
    public ParamExt(Builder builder) {
        super(builder);
    }

    @Override
    protected Component createDatatypeField(Datatype datatype, ValueProperty valueProperty) {
        datatype = property.getRange().asDatatype();

        return super.createDatatypeField(datatype, valueProperty);
    }
}

Так же, необходимо зарегистировать класс ParamExt в web-spring.xml:

 <bean id="cuba_FilterParam" scope="prototype" class="com.company.demo.web.ParamExt"/>