Аннотации экранов

Аннотации на классах экранов предоставляют информацию об экранах фреймворку. Некоторые аннотации применимы к любому типу экрана, некоторые из них можно использовать только в экранах списков или деталей сущностей.

Общие аннотации

@ViewController("MyOnboardingView")
@ViewDescriptor("my-onboarding-view.xml")
@Route(value = "my-onboarding", layout = MainView.class)
@DialogMode(width = "AUTO", height = "AUTO")
public class MyOnboardingView extends StandardView {
  • @ViewController указывает, что класс является экраном. Значением аннотации является идентификатор экрана, который можно использовать для ссылки на экран из главного меню или при программном открытии экрана.

  • @ViewDescriptor соединяет класс экрана с его XML-дескриптором. Значение аннотации указывает путь к файлу дескриптора. Если значение содержит только имя файла, предполагается, что файл находится в том же пакете, что и класс экрана.

  • @com.vaadin.flow.router.Route определяет URL-путь для перехода к этому экрану. Поскольку экран должен открываться внутри основного экрана, layout атрибут указывает класс основного экрана.

  • @DialogMode определяет параметры диалогового окна, когда экран открывается как диалог.

  • @com.vaadin.flow.server.auth.AnonymousAllowed делает экран доступным без аутентификации. По умолчанию, только экран логина доступен для неаутентифицированной сессии.

    Пример User Registration, показывает, как аннотация @AnonymousAllowed используется в экране для самостоятельной регистрации пользователей.

Аннотации экранов списка

// common annotations
@ViewController("Department.list")
@ViewDescriptor("department-list-view.xml")
@Route(value = "departments", layout = MainView.class)
@DialogMode(width = "50em", height = "37.5em")
// list view annotations
@LookupComponent("departmentsTable")
@PrimaryLookupView(Department.class)
public class DepartmentListView extends StandardListView<Department> {
  • @LookupComponent указывает идентификатор компонента UI, который будет использоваться для получения значения, возвращаемого в результате поиска.

  • @PrimaryLookupView указывает, что этот экран является экраном поиска по умолчанию для указанной сущности. Аннотация имеет больший приоритет, чем соглашение {entity_name}.lookup / {entity_name}.list.

Аннотации экранов деталей

// common annotations
@ViewController("Department.detail")
@ViewDescriptor("department-detail-view.xml")
@Route(value = "departments/:id", layout = MainView.class)
// detail view annotations
@EditedEntityContainer("departmentDc")
@PrimaryDetailView(Department.class)
public class DepartmentDetailView extends StandardDetailView<Department> {
  • @EditedEntityContainer указывает контейнер данных, содержащий редактируемую сущность.

  • @PrimaryDetailView указывает, что этот экран является экраном деталей по умолчанию для указанной сущности. Аннотация имеет больший приоритет, чем соглашение {entity_name}.detail.