0

アプリケーションに vaadin 14 を使用しています。私の MainView クラスは Applayout クラスを拡張します。これにより、アプリケーションにナビゲーション バーを追加する addToNavBar(true, some Components) 関数を使用できるようになります。

さて、メイン ビューのナビゲーション バー内に、登録ボタンとログイン ボタンが表示されます。これらのボタンをクリックすると、 addonclick リスナーを使用して、ログインや登録などの他のビューに委任します。これらのビューの変更中、上部のナビゲーション バーはそのままです。ただし、ユーザーがログインまたは登録した場合は、ナビゲーション バーのこれらのログイン ボタンと登録ボタンを削除し、ナビゲーション バー内にあるプロフィール画像アイコンに置き換えます。ただし、子ビュー(登録、ログイン)からvaadin 14でnavbarにアクセスする方法が見つかりませんでした。したがって、子ビューからnavbarのコンテンツにアクセスして変更するにはどうすればよいですか?

public class MainView extends AppLayout {
private static final long serialVersionUID = 1L;
private final Tabs menu;
private HorizontalLayout headerLayout;

public MainView() {
    setPrimarySection(Section.NAVBAR);
    headerLayout = createHeaderContent();
    addToNavbar(true, headerLayout);
    setDrawerOpened(false);
    menu = createMenu();
    addToDrawer(createDrawerContent(menu));
}

private HorizontalLayout createHeaderContent() {
    headerLayout = new HorizontalLayout();
    headerLayout.setId("header");
    headerLayout.getThemeList().set("dark", true);
    headerLayout.setWidthFull();
    headerLayout.setSpacing(false);
    headerLayout.setAlignItems(FlexComponent.Alignment.CENTER);
    headerLayout.add(new DrawerToggle());
    headerLayout.add(createWebsiteName());
    headerLayout.add(createMiddleSpacingInHeader());
    headerLayout.add(createLoginAndRegisterButtons());

    return headerLayout;
}

private Component createLoginAndRegisterButtons() {
        HorizontalLayout layout = new HorizontalLayout();
        layout.setPadding(true);
        layout.setSpacing(true);
        layout.setAlignItems(Alignment.STRETCH);

        Button register = createRegisterButton();
        Button login = createLoginButton();
        Image loggedInUserPicture = createLoggedInUserImage();

        layout.add(register, login, loggedInUserPicture);

        return layout;
    }
4

1 に答える 1