Как вы сказали - на концептуальном уровне кажется странным, что и @Route
, и RouterLayout
в одном классе.@Route
аннотации размещаются на листовых узлах.У вас может быть автономный @Route
, который будет помещен в элемент <body>
, или у вас может быть вложенный макет, в котором маршрут отображается внутри одного или нескольких родительских макетов.Родительский макет может быть указан со вторым параметром аннотации, например,
@Route(value = "users", layout = Dashboard.class)
public class Users extends Div {
//...
, где Dashboard
необходимо реализовать RouterLayout
.Таким образом, вы получите доступ к этому маршруту с помощью http://server-address-here/users
, и он будет отображать Users
внутри Dashboard
.
Если вы хотите иметь более описательный URL, вы можете реализовать это с помощью аннотации @RoutePrefix
на Dashboard
:
@RoutePrefix("dashboard")
public class Dashboard extends VerticalLayout implements RouterLayout {
// ...
, и теперь вы достигнете Users
вид с http://server-address-here/dashboard/users
, в то время как в остальном все останется таким же, как и раньше.