注:考慮看看這個例子看來,他們實際上並沒有使用意見&航海家,他們有些方法僞造。如果您想繼續使用相同的路徑,只需在UI中自動裝載虛假視圖,而不是像下面那樣使用導航器。
的Vaadin-spring boot wiki提供介紹這通過使用:
1)@SpringUI
用自動裝配SpringViewProvider
@Theme("valo")
@SpringUI
public class MyVaadinUI extends UI {
// we can use either constructor autowiring or field autowiring
@Autowired
private SpringViewProvider viewProvider;
@Override
protected void init(VaadinRequest request) {
// other init stuff
Navigator navigator = new Navigator(this, viewContainer);
navigator.addProvider(viewProvider);
}
}
2)@SpringView
@SpringView(name = DefaultView.VIEW_NAME)
public class DefaultView extends VerticalLayout implements View {
public static final String VIEW_NAME = "";
@PostConstruct
void init() {
addComponent(new Label("This is the default view"));
}
@Override
public void enter(ViewChangeEvent event) {
// the view is constructed in the init() method()
}
}
該決定用戶是否應該被重定向到登錄視圖,或其他人,我通常使用ViewChangeListener
,沿着線的東西:
navigator.addViewChangeListener(new ViewChangeListener() {
@Override
public boolean beforeViewChange(ViewChangeEvent event) {
if (VaadinSession.getCurrent().getAttribute("user") == null) {
navigator.getDisplay().showView(loginView);
return false;
} else {
return true;
}
}
@Override
public void afterViewChange(ViewChangeEvent event) {
// meh
}
});
這不是我想繼續他們這樣做的方式。什麼是更好的選擇?我將如何使用導航器進行操作?是否有可能擁有一個導航器並在這兩個視圖之間導航,然後在用戶登錄時使用它在儀表板內導航? –
任何方法都是有效的,最終它取決於你需要/想要做的事情。看一看Vaadin書中提供的[導航器背後的推理](https://vaadin.com/book/vaadin7//page/advanced.navigator.html),考慮一下你的想法,然後決定走哪條路。 – Morfic