[英]Vaadin - passing data between views
我在Vaadin和JavaEE中都很新,我認為我有基本的問題,但很樂意提供幫助。
我的Vaadin項目中有3個類,這里是:主類,只響應啟動和創建導航器:
public class MyprojectUI extends UI {
public Navigator navigator;
public static final String SECOND_VIEW = "SecondView";
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyprojectUI.class)
public static class Servlet extends VaadinServlet {
}
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
ComponentContainerViewDisplay viewDisplay = new ComponentContainerViewDisplay(layout);
navigator = new Navigator(UI.getCurrent(), viewDisplay);
navigator.addView("", new FirstView());
navigator.addView(SECOND_VIEW, new SecondView());
}
}
和兩個觀點類:
public class FirstView extends HorizontalLayout implements View {
TextArea text = new TextArea();
Button button = new Button("go");
@Override
public void enter(ViewChangeEvent event) {
this.addComponent(text);
this.addComponent(button);
button.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
getUI().getNavigator().navigateTo(MyprojectUI.SECOND_VIEW);
}
});
}
}
-
public class SecondView extends HorizontalLayout implements View {
Label label = new Label("Passed text here");
@Override
public void enter(ViewChangeEvent event) {
this.addComponent(label);
}
}
如何將TextArea中的數據傳遞到第二個視圖? 我希望在單擊“go”按鈕時將標簽文本設置為TextArea中的文本。
感謝幫助。
我建議您應用Model-View-Presenter模式。 查看已經完成。 這里不需要模型。 只需寫一個演示者。 在MVP中,Presenter由視圖觸發,然后演示者從視圖中收集所需的數據,進行一些計算和更新視圖。 在目前的情況下,它可能看起來像:
class Presenter {
FirstView firstView;
SecondView secondView;
public Presenter (FirstView firstView, SecondView secondView) {
this.firstView = firstView;
this.secondView = secondView;
}
public void goClicked(UI ui) {
secondView.label.setValue(firstView.text.getValue());
ui.getNavigator().navigateTo(MyprojectUI.SECOND_VIEW);
}
}
代碼簡化了,推薦的做法是定義一個視圖接口而不是直接字段訪問,但主要思路是一樣的。
SecondView secondView = new SecondView();
navigator.addView(SECOND_VIEW, secondView );
Presenter presenter = new Presenter(firstView, secondView);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.