使用ui作为视图的容器

时间:2014-07-31 09:42:41

标签: java vaadin vaadin7

我尝试用Vaadin实现一个网站,但我不知道我是否理解Vaadin UI和Views完全错误。我想要实现的是为我的网站定义一个基本模板,并在我的基本模板中显示不同的视图。

我的第一种方法是在UI中定义基本模板,在不同的视图中定义内容(通过导航器加载)。这是可能的还是我得到了Vaadin UI和Views的概念完全错了?如果这是可能的,我应该如何正确实现它?

我的第一种方法是以下样本。但是使用Navigator加载的视图会从UI中替换完整的基本模板...我错了什么?

public class MyUI extends UI {

    private Layout rootLayout;

    @Override
    protected void init(VaadinRequest request) {
        buildBaseTemplate();
        Navigator navigator = new Navigator(this, rootLayout);
    }

    private void buildBaseTemplate() {
        rootLayout = new CssLayout();
        /* ... my base template ... */
    }
}

public class MyFirstView implements View {

    @Override
    public void enter(ViewChangeListener.ViewChangeEvent event) {
        buildView();
    }

    private void buildView() {
        /* ... my view definition ... */
    }
}

1 个答案:

答案 0 :(得分:1)

这是一种正确的方法。但导航器将替换rootLayout的内容,所以也许你最好通过一些布局,这是在你的rootLayout内。如果您有更复杂的设置(例如,显示登录视图“全屏”),您可能需要编写自己的ViewDisplay实现,处理此问题(通过Navigator的ctor传递。)