Layout básico do Vaadin: cabeçalho e rodapé fixos + conteúdo rolável

Eu sou novo no Vaadin e estou tentando saber se ele pode atender às minhas necessidades de uma migração de projeto de aplicativo da web. Na verdade, já estou perdendo meu tempo com um objetivo simples: ter um layout com cabeçalhos e rodapés fixos e um conteúdo rolável no meio. Eu fiz um violino muito básico com o que eu quero:jsfiddle

Aqui está a principal classe Vaadin que eu criei:

public class MyVaadinUI extends UI {

// attributes

@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "testvaadin.aep.com.AppWidgetSet")
public static class Servlet extends VaadinServlet {
}

@Override
protected void init(VaadinRequest request) {

    buildMainLayout();
}

private void buildMainLayout() {

    final VerticalLayout mainLayout = new VerticalLayout();
    mainLayout.setSizeFull();

    //HEADER
    final VerticalLayout headerLayout = new VerticalLayout();
    final Resource res = new ThemeResource("img/logo.png");
    final Image image = new Image(null, res);
    headerLayout.addComponent(image);

    //CONTENT
    final VerticalLayout contentLayout = new VerticalLayout();
    for(int i=0; i<80; i++){
        contentLayout.addComponent(new Button("TEST " + i));
    }

    //FOOTER
    final VerticalLayout footerLayout = new VerticalLayout();
    footerLayout.addComponent(new Label("--------------------------- footer --------------------------"));

    mainLayout.addComponent(headerLayout);
    mainLayout.addComponent(contentLayout);
    mainLayout.addComponent(footerLayout);
    mainLayout.setExpandRatio(contentLayout, 1);
    setContent(mainLayout);
}

}

A página exibida está OK na inicialização, mas quando eu rolar para baixo, o rodapé também rola (não é fixo).

No arranque:

Quando rolado:

Eu procurei muitas páginas sobre esse tópico, mas nunca vi nenhuma resposta correta. Isso parece ser bastante complicado em Vaadin, embora seja muito simples em HTML; Vaadin pode não atender às minhas necessidades. De qualquer forma, você sabe como posso conseguir esse comportamento? Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion