使用手册的示例代码在 Vaadin Flow 中编写 `UI` 子类

Posted

技术标签:

【中文标题】使用手册的示例代码在 Vaadin Flow 中编写 `UI` 子类【英文标题】:Using manual’s example code for writing a `UI` subclass in Vaadin Flow 【发布时间】:2018-11-12 22:43:38 【问题描述】:

Differences Between V10 and V8 Applications 的手册页面上,有此示例代码供那些想要编写 UI 子类的人使用,就像我们在 Vaadin 8 中所做的那样,尽管在 Vaadin Flow 中不再需要。

(将原来的 mydomain-dot-com 更改为 example.com 以安抚 Stack Overflow 审查机器人)

@WebServlet(urlPatterns = "/*", name = "myservlet", asyncSupported = true,
// Example on initialization parameter configuration
initParams = 
        @WebInitParam(name = "frontend.url.es6", value = "http://example.com/es6/"),
        @WebInitParam(name = "frontend.url.es5", value = "http://example.com/es5/") )
// The UI configuration is optional
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public class MyServlet extends VaadinServlet 


// this is not necessary anymore, but might help you get started with migration
public class MyUI extends UI 
    protected void init(VaadinRequest request) 
        // do initial steps here.
        // previously routing
    
   

从语法上讲,这要么不正确,要么被写入两个单独的.java 文件。

还是应该在 MyUI 类中设置 MyServlet 类,就像在 Vaadin 8 中默认设置的那样?像这样:

package com.raddkit;

import com.vaadin.flow.component.UI;
import com.vaadin.flow.server.VaadinRequest;
import com.vaadin.flow.server.VaadinServlet;
import com.vaadin.flow.server.VaadinServletConfiguration;

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

public class MyUI extends UI 
    protected void init ( VaadinRequest request ) 

    

    @WebServlet ( urlPatterns = "/*", name = "myservlet", asyncSupported = true,
        // Example on initialization parameter configuration
        initParams = 
            @WebInitParam ( name = "frontend.url.es6", value = "http://example.com/es6/" ) ,
            @WebInitParam ( name = "frontend.url.es5", value = "http://example.com/es5/" )  )
    // The UI configuration is optional
    @VaadinServletConfiguration ( ui = MyUI.class, productionMode = false )
    public class MyServlet extends VaadinServlet 
    

【问题讨论】:

奇怪,真的。但我只会做单独的文件。 【参考方案1】:

该示例旨在写入两个单独的 .java 文件。或者,您可以将 servlet 定义为公共 static 内部类,包含在 UI 类中。在这种情况下,@VaadinServletConfigurationui 属性默认为封闭 UI。

【讨论】:

以上是关于使用手册的示例代码在 Vaadin Flow 中编写 `UI` 子类的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vaadin Flow 14 中创建一个简单的 HTML 表格

Vaadin Flow:删除 PollListener

在 Vaadin Flow 中的布局中居中小部件

Vaadin Flow 应用程序自动在明暗模式之间切换

Vaadin 21 Flow + Spring Security OAuth2:找不到'oauth2/authorization/google'的路由

Vaadin Flow 14,Jetty嵌入式和静态文件