На странице руководства для Различия между приложениями 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 {
}
}