Аннотации экранов
Аннотации на классах экранов предоставляют информацию об экранах фреймворку. Некоторые аннотации применимы к любому типу экрана, некоторые из них можно использовать только в экранах списков или деталей сущностей.
Общие аннотации
@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
.