2

我有这个简单的布局:

@StyleSheet("frontend://styles.css")
@Route("")
public class MainView extends Main implements RouterLayout {
    private static final long serialVersionUID = 1L;
    public MainView(@Value("${env}") String env, @Autowired BuildProperties buildProperties) {
        HeaderComponent header = new HeaderComponent(env, Application.APP_NAME, buildProperties.getVersion());
        FooterComponent footer = new FooterComponent(env, buildProperties.getVersion())
        add(header, footer);
    }
}

顶部是页眉,底部是页脚。

在我想添加这个视图之间:

@Route(layout = MainView.class, value = "secured/ue")
public class UEView extends Article {
// many stuff
}

当我点击一个链接(或者当我使用路由'secured/ue')时,会显示这个视图:

问题是 UE 视图显示在“页脚”之后。

我尝试使用 css 来解决这个问题,但它不起作用:

main{
display: grid;
grid-template-areas:
"header"
"article"
"footer";
}

我怎样才能做到这一点 ?显示页眉和页脚之间的视图??

4

1 回答 1

3

您需要在主视图中为您的文章添加一个占位符,例如在 Div contentArea 下方。除此之外,您还需要覆盖 showRouterLayoutContent(..) 方法。

@Route("")
public class MainView extends Main implements RouterLayout {
    private Div contentArea = new Div();

    public MainView(@Value("${env}") String env, @Autowired BuildProperties buildProperties) {
        HeaderComponent header = new HeaderComponent(env, Application.APP_NAME, buildProperties.getVersion());
        FooterComponent footer = new FooterComponent(env, buildProperties.getVersion())
        add(header, contentArea, footer);
    }

    @Override
    public void showRouterLayoutContent(HasElement content) {
       contentArea.getElement().appendChild(content.getElement());
    }

}
于 2019-03-13T05:32:32.467 回答