Универсальный компонент в XML

Элемент XML component позволяет вам создать любой UI-компонент, указав его полное имя класса (FQN). Свойства компонента определяются с помощью вложенных элементов property, аналогично настройке действия.

Например, вы можете определить компонент Button таким образом:

<component id="button" class="com.vaadin.flow.component.button.Button">
    <properties>
        <property name="text" value="Button"/>
        <property name="icon" value="PLUS" type="ICON"/>
    </properties>
</component>

Вот пример определения пользовательского компонента:

<component id="testComponent" class="com.company.onboarding.component.TestComponent">
    <properties>
        <property name="text" value="Button"/>
        <property name="stringsList" value="a b ,c"/>
        <property name="stringsSet" value="a b ,c"/>
        <property name="stringsArray" value="a b ,c"/>
        <property name="strings" value="a b ,c"/>
        <property name="dataContainer" value="productsDc" type="CONTAINER_REF"/>
    </properties>
</component>

Конфигурация свойств

  • Значение атрибута name преобразуется в имя метода-сеттера, например:

    • textsetText()

    • dataLoadersetDataLoader()

  • Фреймворк ищет первый метод с соответствующим name и одним входным параметром для установки значения.

    Если несколько методов имеют одинаковое имя, нет гарантии, что для установки значения будет использован именно предполагаемый метод.
  • Тип входного параметра найденного метода используется для преобразования строкового значения из атрибута value в фактическое значение.

  • Атрибут type указывает, что строковое значение должно быть преобразовано одним из подключаемых бинов PropertyParser:

    Тип Парсер Описание

    ICON

    IconPropertyParser

    Преобразует строку в экземпляр Icon

    CONTAINER_REF

    DataContainerPropertyParser

    Находит контейнер данных по ID

    LOADER_REF

    DataLoaderPropertyParser

    Находит загрузчик данных по ID

Парсеры свойств

Когда строковые значения не могут быть напрямую преобразованы с использованием типа параметра, преобразованием занимаются подключаемые бины PropertyParser.

В настоящее время существует три реализации:

  • IconPropertyParser. Преобразует строки в экземпляры Icon.

    • Если переданная строка содержит разделитель :, новый Icon создается с использованием значений коллекции иконок и имени иконки.

    • В противном случае строка трактуется как имя константы VaadinIcon.

      Примеры:

    • "PLUS" → иконка VaadinIcon.PLUS.

    • "myicons:custom" → Иконка из пользовательской коллекции "myicons" с именем "custom".

  • DataContainerPropertyParser. Возвращает контейнер данных с заданным ID из объекта ViewData соответствующего экрана.

  • DataLoaderPropertyParser. Возвращает загрузчик данных с заданным ID из объекта ViewData соответствующего экрана.