Универсальный компонент в 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преобразуется в имя метода-сеттера, например:-
text→setText() -
dataLoader→setDataLoader()
-
-
Фреймворк ищет первый метод с соответствующим
nameи одним входным параметром для установки значения.Если несколько методов имеют одинаковое имя, нет гарантии, что для установки значения будет использован именно предполагаемый метод. -
Тип входного параметра найденного метода используется для преобразования строкового значения из атрибута
valueв фактическое значение. -
Атрибут
typeуказывает, что строковое значение должно быть преобразовано одним из подключаемых биновPropertyParser:Тип Парсер Описание ICONIconPropertyParserПреобразует строку в экземпляр
IconCONTAINER_REFDataContainerPropertyParserНаходит контейнер данных по
IDLOADER_REFDataLoaderPropertyParserНаходит загрузчик данных по
ID
Парсеры свойств
Когда строковые значения не могут быть напрямую преобразованы с использованием типа параметра, преобразованием занимаются подключаемые бины PropertyParser.
В настоящее время существует три реализации:
-
IconPropertyParser. Преобразует строки в экземпляры
Icon.-
Если переданная строка содержит разделитель
:, новыйIconсоздается с использованием значений коллекции иконок и имени иконки. -
В противном случае строка трактуется как имя константы
VaadinIcon.Примеры:
-
"PLUS"→ иконкаVaadinIcon.PLUS. -
"myicons:custom"→ Иконка из пользовательской коллекции"myicons"с именем"custom".
-
-
DataContainerPropertyParser. Возвращает контейнер данных с заданным
IDиз объектаViewDataсоответствующего экрана. -
DataLoaderPropertyParser. Возвращает загрузчик данных с заданным
IDиз объектаViewDataсоответствующего экрана.