私の Vaadin 14 のメインページはルート Route を持つ MainView です。
MainView
は他のビューの「テンプレート」として使用されるため (with layout = MainView.class
)、それ自体で初期化するべきではなく、レイアウトとして他のビューにのみ使用される「抽象」ビューのように見えます。
今の問題: ユーザーがにアクセスするMainView
とBeforeEnterEvent
、コンストラクターの後に呼び出されます。これは、ユーザーがまだ認証されておらず、コンストラクターがすでにタブの構築などを実行しているため、例外がスローされる可能性があります。
ユーザーが MainView のルートまたはコンストラクターが呼び出される前に実行されるイベントにアクセスできないようにする方法はありますか? ビューへのアクセスは、ユーザーが認証されている場合にのみ許可されます。
@Route("")
public class MainView extends AppLayout implements BeforeEnterObserver {
public MainView() {
super();
// Creates all the Tabs that are used in the MainView, may throw exception if the user calls the URL of this View before authenticated
setupView();
}
...
@Override
public void beforeEnter(BeforeEnterEvent event) {
// Reroute to Login if User is NOT authenticated
}
}
@Route(value = "foo", layout = MainView.class)
public class OtherView {
アップデート:
この修正は、Vaadin 14.2の実験的機能としてリリースされています。