Vaadin:如何添加3个嵌套布局

勒内·阿尔瓦伦加:

我在与我此刻vaadin UI的问题。我有我的看法与RouterLayout连接是这样的:

  • -AppView(主UI)| 网址:/
  • --OperationsView(在APPVIEW一个容器内的嵌套布局)| 网址:/操作
  • --- Operation1View(在OperationsView一个容器内的嵌套布局)| 网址:/ operation1 < - 这不是工作

任何课前我的声明是:

APPVIEW声明

@Route(value = AppView.ROUTE)

OperationsView声明

@Route(value = OperationsView.ROUTE, layout = AppView.class)

Operation1View声明

@Route(value = Operation1View.ROUTE, layout = OperationsView.class)

问题是第三轮廓显示不正确。要到另一个页面时,它需要accesed当整个页面扰乱了在UI的一切。如果不是网址为:/操作/ operation1而不是/ operation1?不过,我不能让它正常工作。我缺少的东西吗?或者具有3个嵌套布局是不可能的vaadin?

一种可能的解决(?):我应该解雇在第二布局第三嵌套布局和添加方法,以除去在容器中的内容并显示我想要的物品?我真的不关心在这一个网址导航。这是过去的事情,我可以拿出。

提前致谢

anasmi:

或者具有3个嵌套布局是不可能的vaadin?

这是可能的。但你实现RouterLayout在这两个OperationsViewAppView类?

看看到这里的例子:多个父布局与@ParentLayout它有一个建立相当接近你的。

public class MainLayout extends Div implements RouterLayout {
}

@ParentLayout(MainLayout.class)
public class MenuBar extends Div implements RouterLayout {
    public MenuBar() {
        addMenuElement(TutorialView.class, "Tutorial");
        addMenuElement(IconsView.class, "Icons");
    }
    private void addMenuElement(Class<? extends Component> navigationTarget,
            String name) {
        // implementation omitted
    }
}

@Route(value = "tutorial", layout = MenuBar.class)
public class TutorialView extends Div {
}

@Route(value="icons", layout = MenuBar.class)
public class IconsView extends Div {
}

如果不是网址为:/操作/ operation1而不是/ operation1?

不,在你的@Router注释您指定它的operation1通过指定layout正在定义的DOM结构,而不是导航route.From 文档

集的路由目标component.When使用相同布局的组件之间进行导航的父组件,相同的组件实例被重复使用。默认布局目标是UI,但布局不应该是一个自定义的UI界面为是用于了解,在此路由栈结束,没有父布局应参与一个特殊的类。因为它代表着身体的所有元素堆栈的布局将被添加到用户界面。

如果你希望它是operation\operation1,你应该使用@RoutePrefix,而不是ParentLayout路径控制

要到另一个页面时,它需要accesed当整个页面扰乱了在UI一切

你能告诉截图或添加一些细节如何弄乱?

编辑:


它实际上被证明是很难实现比我预期的,但这似乎工作:

MainView.java

@Route("")
public class MainView extends VerticalLayout implements RouterLayout {
....

OperationsView.java

//This is needed if you want "operations" to be accessible on its own
@Route(value = "operations",layout = MainView.class)
@ParentLayout(MainView.class)
public class OperationsView extends VerticalLayout implements RouterLayout {

    Div content=new Div();
    public OperationsView(){
        System.out.println("operations view");
        add(new Label("operations view"));
        add(content);
    }
}

Operation1View.java

@Route(value="operation1",layout = OperationsView.class)
@RoutePrefix("operations")
public class Operation1View extends VerticalLayout {

    public Operation1View(){
        add(new Label("Operations view"));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章