Какую версию Vaadin вы используете?Если вы используете Vaadin> = 10 : как насчет использования сеанса?
Вы можете сохранить токен в VaadinSession и читать его оттуда при каждом запросе.
Я создал минимальный пример, в котором (при нажатии кнопки) я проверяю, сохранен ли токен в сеансе.Если да, то это напечатано в уведомлении.Если нет, то он сохраняется в сессии.Код выглядит так:
@Route("")
public class MainView extends VerticalLayout {
public MainView() {
Button button = new Button("Click me", event -> {
Object token = VaadinSession.getCurrent().getAttribute("token");
if (token == null) {
Notification.show("No token found in session. Now storing token = 123456");
VaadinSession.getCurrent().setAttribute("token", "123456");
} else {
Notification.show("Found token in session: " + token.toString());
}
});
add(button);
}
}
Результат выглядит следующим образом:
(кнопка была нажата три раза)
Обновление : то же самое можно использовать в Vaadin 8 , где код минимального примера выглядит так:
@Theme("mytheme")
public class MyUI extends UI {
@Override
protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();
Button button = new Button("Click me", event -> {
Object token = VaadinSession.getCurrent().getAttribute("token");
if (token == null) {
Notification.show("No token found in session. Now storing token = 123456");
VaadinSession.getCurrent().setAttribute("token", "123456");
} else {
Notification.show("Found token in session: " + token.toString());
}
});
layout.addComponents(button);
setContent(layout);
}
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
}