почему навигация переходит к другому в vaadin, когда я использую навигатор? - PullRequest
0 голосов
/ 24 ноября 2018

когда я пытался перейти на другую страницу с помощью навигатора, он всегда переходил на эту страницу, и если кто-то мог мне помочь с этим:

http://localhost:8080/#!/index

и вот код:

 @SpringUI(path = "/")
 public class Mainview extends UI implements View {`

@Override
protected void init(VaadinRequest vaadinRequest) {
    VerticalLayout contents = new VerticalLayout();
    setContent(contents);

    TextField username = new TextField("Email OR User Name");
    username.setWidth("25%");
    contents.addComponent(username);
    contents.setComponentAlignment(username, Alignment.MIDDLE_CENTER);

    TextField password = new TextField("password");
    password.setWidth("25%");
    contents.addComponent(password);
    contents.setComponentAlignment(password, Alignment.MIDDLE_CENTER);

    Button signButton = new Button("Sign In");
    signButton.setWidth("15%");
    contents.addComponent(signButton);
    contents.setComponentAlignment(signButton, Alignment.BOTTOM_CENTER);

    signButton.addClickListener(clickEvent -> {
        Navigator navigator = new Navigator(getUI(), this);
        navigator.addView("/", new Mainview());
        navigator.addView("/index", new SecondPage());
        navigator.navigateTo("/index");
    });
}
}

и вот другая страница:

@SpringUI(path = "/index")
public class SecondPage extends UI implements View {
@Override
protected void init(VaadinRequest vaadinRequest) {
    VerticalLayout contents = new VerticalLayout();
    setContent(contents);
    Button button = new Button("hey");
    button.setWidth("10%");
    button.setHeight("10%");

    contents.addComponent(button);
}

спасибо за помощников.

1 Ответ

0 голосов
/ 24 ноября 2018

Причина довольно проста, другой пользовательский интерфейс развернут по адресу http://localhost:8080/index, а не http://localhost:8080/#!/index. Похоже, у вас неправильное представление о Navigator.Навигатор предназначен для навигации внутри пользовательского интерфейса, то есть для навигации между представлениями, а не между пользовательскими интерфейсами.

Я предполагаю, что вы на самом деле не хотите определять SecondPage как другой пользовательский интерфейс, а как другое представление.Таким образом, вы не должны расширять UI там.Также, поскольку вы используете Spring DI, вы должны определить его как @SpringView.При этом вам не нужно регистрировать его с помощью метода Navigator.addView (..), поскольку надстройка Spring автоматически регистрирует все аннотированные представления @SpringView для автоматического просмотра поставщика.Поэтому вам нужно просто автоматически подключить провайдера представлений и установить провайдера представлений в навигаторе.

Здесь приведена дополнительная документация с примерами: https://vaadin.com/docs/v8/framework/advanced/advanced-spring.html

...