Java Vaadin-在视图之间传递数据
我对Vaadin和JavaEE非常陌生,我有一个基本的问题,但我很乐意得到帮助 在我的Vaadin项目中,我有3门课,它们是: Main类,仅对启动和创建导航器作出响应:Java Vaadin-在视图之间传递数据,java,jakarta-ee,views,vaadin,Java,Jakarta Ee,Views,Vaadin,我对Vaadin和JavaEE非常陌生,我有一个基本的问题,但我很乐意得到帮助 在我的Vaadin项目中,我有3门课,它们是: Main类,仅对启动和创建导航器作出响应: public class MyprojectUI extends UI { public Navigator navigator; public static final String SECOND_VIEW = "SecondView"; @WebServlet(value =
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);
}
});
}
}
-
如何将数据从文本区域传递到第二个视图?我想将标签文本设置为单击“go”按钮时文本区域中的文本
谢谢您的帮助。我建议您应用模型视图演示者模式。视图已生成。这里不需要模型。写一个演示者就行了。 在MVP中,Presenter由视图触发,然后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);
SecondView secondView = new SecondView();
navigator.addView(SECOND_VIEW, secondView );
Presenter presenter = new Presenter(firstView, secondView);