Использование примера кода руководства для написания подкласса `UI` в Vaadin Flow - PullRequest
0 голосов
/ 13 ноября 2018

На странице руководства для Различия между приложениями V10 и V8 приведен пример кода для тех, кто хочет написать подкласс UI, как мы это делали в Vaadin8, несмотря на то, что больше не требуется в 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.

Или класс MyServlet должен быть установлен в классе MyUI, как это было сделано по умолчанию в 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 Ответ

0 голосов
/ 13 ноября 2018

Этот пример предназначен для записи в два отдельных файла .java.В качестве альтернативы вы можете определить сервлет как открытый static внутренний класс, заключенный в класс пользовательского интерфейса.В этом случае для атрибута ui @VaadinServletConfiguration по умолчанию используется интерфейс пользователя.

...