アプリケーションに 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;
}