Vaddin, необязательный параметр в url-ле,

Например,

Если параметра в урле нет, то должны отобразиться все заказы всех клиентов менеджера(https://..../orders),


class OrderList


если параметр есть, все заказы клиента(https://..../orders/{clientId}). например, url с параметром

Есть класс ManagerView отрисовывется в первую очередь,


класс ManagerView


class ManagerView.java

...............
    @Route(value = "")
    @RoutePrefix("manager")
    public class ManagerView extends AppLayout implements TokenListener {
    
        private final AuthService authService;

public ManagerView(AuthService authService) {
    this.authService = authService;
    this.authService.getToken(this);
}

private void createHeader() {

.....................................

 private void createDrawer() {
    RouterLink link1 = new RouterLink("Заказы", OrderList.class);
    link1.addClassName("link1");
    RouterLink link2 = new RouterLink("Клиенты", ClientList.class);
    link2.addClassName("link2");
    link1.setHighlightCondition(HighlightConditions.sameLocation());
    link2.setHighlightCondition(HighlightConditions.sameLocation());

    addToDrawer(new VerticalLayout(link1, link2));
}

    @Override
    public void execute(String token) {
        createHeader();
        createDrawer();
    }
}

И класс OrderList, отвечает за отрисовку таблицы, при клике на "Заказы".

class OrderList.java

...............
        @Route(value = "orders", layout = ManagerView.class)
        public class OrderList extends VerticalLayout implements TokenListener, HasUrlParameter<Long>{
        
            private Long parametrClientId;
        
            private final AuthService authService;
            private final OrderService orderService;

.................................
    @Override
    public void execute(String token) {
        createDrawer(token);
    }

    @Override
    public void setParameter(BeforeEvent beforeEvent, Long parametrClientId) {
        this.parametrClientId = parametrClientId;
    }

Ответы (1 шт):

Автор решения: Yan Los

в классе OrderList, в методе setParametr, добавить аннотацию: @OptionalParameter

      @Override
    public void setParameter(BeforeEvent beforeEvent, @OptionalParameter Long parametrClientId) {
        this.parametrClientId = parametrClientId;
    }
}

https://vaadin.com/api/platform/14.4.7/com/vaadin/flow/router/OptionalParameter.html

→ Ссылка