Как правильно сделать навигацию на view в Vaadin?

359
23 мая 2017, 01:40

Не могу понять, как правильно сделать навигацию на вью через спринг. Вроде сделал все четко по этому примеру http://vaadin.github.io/spring-tutorial/ Вот собственно код.

Вью:

@SpringView(name = DriversView.VIEW_NAME)
public class DriversView extends VerticalLayout implements View {
    public static final String VIEW_NAME = "drivers";

    @PostConstruct
    void init() {
        addComponent(new Label("This are the drivers view"));
    }
    @Override
    public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
    }
}

UI:

@Theme("valo")
@SpringUI(path = "/admin")
@SpringViewDisplay
public class AdminPage extends UI implements ViewDisplay {
  /*  @Autowired
    HeaderMenu headerMenu;*/

    @Override
    protected void init(VaadinRequest vaadinRequest) {
        VerticalLayout rootLayout = getVerticalLayout();
        //verticalLayout.setComponentAlignment(headerMenu, Alignment.TOP_CENTER);
        setContent(rootLayout);
        //verticalLayout.addComponent(headerMenu);

        CssLayout components = new CssLayout();
        Button button1 = new Button("Drivers");
        Button button2 = new Button("Clients");

        components.addComponents(button1, button2);
        rootLayout.addComponent(components);
        springViewDisplay = getSpringViewDisplay();
        rootLayout.addComponent(springViewDisplay);
        rootLayout.setExpandRatio(springViewDisplay, 1.0f);
        System.out.println("UI: " + getUI());
        System.out.println("NAV: " + getUI().getNavigator());
        System.out.println("VIEW_NAME: " + DriversView.VIEW_NAME);
        button1.addClickListener(event -> getUI().getNavigator().navigateTo(DriversView.VIEW_NAME));
        button2.addClickListener(new Button.ClickListener() {
            @Override
            public void buttonClick(Button.ClickEvent clickEvent) {
                getUI().getNavigator().navigateTo(ClientsView.VIEW_NAME);
            }
        });
    }
    private VerticalLayout getVerticalLayout() {
        VerticalLayout verticalLayout = new VerticalLayout();
        verticalLayout.setSizeFull();
        verticalLayout.setStyleName(ValoTheme.LAYOUT_HORIZONTAL_WRAPPING);
        return verticalLayout;
    }
    private Panel getSpringViewDisplay() {
        Panel springViewDisplay = new Panel();
        springViewDisplay.setSizeFull();
        return  springViewDisplay;
    }
    @Override
    public void showView(View view) {
        springViewDisplay.setContent((Component) view);
    }
}

getUI().getNavigator возвращает null Подскажите, пожалуйста, как сделать эту навигацию?

READ ALSO
Вывод из бд в строковый массив

Вывод из бд в строковый массив

Имеется база данных содержащая столбец с названиямиКаким образом можно вывести данные из БД в массив, а потом из этого массива заполнить...

219
Hibernate Lazy initialization в Master - Detail отображении

Hibernate Lazy initialization в Master - Detail отображении

Имеется схема БД (Упрощаю) в которой есть две таблицы назовем их Накладная и Товары_НакладнойНа клиенте (JavaFX) у меня два TableView Master и Detail

269
Проблемка в Android SDK Studio после переделывания в apk

Проблемка в Android SDK Studio после переделывания в apk

В общем, я написал программу и при проверке эмулятором - она работаетВ ней есть два Activity, с кнопками

281
java.lang.IllegalArgumentException Из-за ViewPager

java.lang.IllegalArgumentException Из-за ViewPager

Есть следующая проблема- На мобильном приложении есть 1 активити и 2 фрагмента

342