Разница между аннотированием с помощью @Tag (Tag.DIV) и расширением из класса Div - PullRequest
0 голосов
/ 04 октября 2018

Я изучаю Vaddin 11 и у меня есть сомнения, в чем разница между этим:

public class MyClass extends Div { /... }

... и этим?:

@Tag(Tag.DIV)
public class MyClass { /** }

Согласнодокументация:

Класс деления: Компонент, представляющий элемент <div>.

-

Аннотация тега: Определяет тег, который будет использоваться для корневого элемента для компонента, созданного с использованием конструктора компонента по умолчанию.

Похоже, что они делают одно и то же: создание класса для представления корневого элемента,Это так?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Разница заключается в серверном API.Класс Div сам по себе тривиален, но он реализует некоторые полезные смешанные интерфейсы через своих родителей, такие как HasSize и HasStyle.Это означает, что вы можете, например, позвонить myClass.setHeight("500px"), если вы набираете Div.

С другой стороны, если вы используете аннотацию @Tag, чтобы сообщить, что у вашего MyComponent класса есть тег div на клиенте, вы не будете предоставлять никаких серверных методов в дополнение кто, что вы решили предоставить себе.Хорошо это или плохо, зависит от того, какие функции вы хотите предоставить пользователям вашего класса.

0 голосов
/ 04 октября 2018

Оба способа дают вам элемент <div> в браузере (за исключением того, что вам нужно добавить extends Component к примеру @Tag(Tag.DIV)).

Разница в том, что класс Div также определяетнекоторые дополнительные API специально для <div> элементов, тогда как вы имеете полный контроль над общедоступным API компонента, если создаете универсальный подкласс Component с @Tag(Tag.DIV).

...