Nested Routes
Verschachtelte Routen ermöglichen es, untergeordnete Routen innerhalb von übergeordneten Routen darzustellen, wodurch eine modulare und wiederverwendbare Benutzeroberfläche entsteht. Übergeordnete Routen definieren gemeinsame Komponenten, während untergeordnete Routen in spezifische Ausgabestellen innerhalb dieser übergeordneten Komponenten eingefügt werden.
Definieren von verschachtelten Routen
Verschachtelte Routen werden mit dem Parameter outlet in der Annotation @Route erstellt, die eine Eltern-Kind-Beziehung herstellt. Das outlet bestimmt, wo die untergeordnete Komponente innerhalb der übergeordneten Route gerendert wird.
@Route
public class MainLayout extends Composite<AppLayout> {
public MainLayout() {
setHeader();
setDrawer();
}
}
@Route(outlet = MainLayout.class)
public class DashboardView extends Composite<Div> {
public DashboardView() {
getBoundComponent().add(new H1("Dashboard-Inhalt"));
}
}
@Route(outlet = DashboardView.class)
public class SettingsView extends Composite<Div> {
public SettingsView() {
getBoundComponent().add(new H1("Einstellungen-Inhalt"));
}
}
In diesem Beispiel:
MainLayoutist eine Layout-Route.DashboardViewist eine View-Route, die inMainLayoutverschachtelt ist.SettingsViewist eine View-Route, die inDashboardViewverschachtelt ist.
Beim Navigieren zu /dashboard/settings führt der Router Folgendes aus:
- Rendert
MainLayout. - Injiziert
DashboardViewin das Outlet vonMainLayout. - Injiziert schließlich
SettingsViewin das Outlet vonDashboardView.
Diese hierarchische Struktur spiegelt sich in der URL wider, wobei jeder Abschnitt ein Level in der Komponentenhierarchie darstellt:
- URL:
/dashboard/settings - Hierarchie:
MainLayout: Layout-RouteDashboardView: View-RouteSettingsView: View-Route
Diese Struktur stellt konsistente gemeinsame UI-Komponenten (wie Kopfzeilen oder Navigationsmenüs) sicher, während der Inhalt innerhalb dieser Layouts dynamisch geändert werden kann.