gpt4 book ai didi

java - 我应该将应用程序的所有 “guts” 放在 Vaadin 应用程序中的什么位置?继续添加 “MyUI”类吗?

转载 作者:行者123 更新时间:2023-12-01 18:05:01 24 4
gpt4 key购买 nike

我已经成功获得了我的第一个Vaadin 7 个应用程序已启动并正在运行,由 Maven archetype 为我创建。该应用程序的模板显示了布局、其小部件以及小部件的业务逻辑(单击的按钮),所有这些都在 MyUI 类中定义。

我该去哪里?我是否只是继续在 MyUI 中添加内容,还是有更好的方法来构建我的应用程序的各个部分?

这里是 Maven 原型(prototype)给我的 MyUI 的 Java 源代码。

package com.example.vaadinlayoutsexample;

import javax.servlet.annotation.WebServlet;

import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.annotations.Widgetset;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;

/**
* This UI is the application entry point. A UI may either represent a browser window
* (or tab) or some part of a html page where a Vaadin application is embedded.
* <p>
* The UI is initialized using {@link #init(VaadinRequest)}. This method is intended to be
* overridden to add component to the user interface and initialize non-component functionality.
*/
@Theme("mytheme")
@Widgetset("com.example.vaadinlayoutsexample.MyAppWidgetset")
public class MyUI extends UI {

@Override
protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();

final TextField name = new TextField();
name.setCaption("Type your name here:");

Button button = new Button("Click Me");
button.addClickListener( e -> {
layout.addComponent(new Label("Thanks " + name.getValue()
+ ", it works!"));
});

layout.addComponents(name, button);
layout.setMargin(true);
layout.setSpacing(true);

setContent(layout);
}

@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
}

应用程序运行的屏幕截图。

screen shot of Vaadin app template running in a web browser window

最佳答案

当您的应用程序开始拥有更多 View 时,您应该开始至少使用 Navigator 以及 ViewProvider。这两个类都在 Vaadin 框架中。

Navigator 对象将在 MyUI 类中创建。每个 View 都实现 View 接口(interface),对于每个 View ,您还可以有一个演示者(尽管这不是 Vaadin 概念)。

自定义的ViewChangeListener以及NavigationStateManager也可能有用。

参见https://vaadin.com/docs/-/part/framework/advanced/advanced-navigator.html更多细节。我还制作了同时使用 MVP 和 DAO 模式的“基础应用程序”,您可以在这里查看:https://github.com/nyg/vaadin-app-base .

关于java - 我应该将应用程序的所有 “guts” 放在 Vaadin 应用程序中的什么位置?继续添加 “MyUI”类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37222949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com