Vaadin 改变主题不是持久的瓦丁

Vaadin 改变主题不是持久的瓦丁,vaadin,vaadin8,Vaadin,Vaadin8,我正在通过ui.setTheme(“主题名”)更改主题。它工作得很好,直到我改变了页面,然后又回到了默认页面。如何让它持久 每个页面类都有@Theme注释,默认主题的名称取自Spring的应用程序.yml 之所以会出现这种情况,是因为每次在浏览器中加载新页面时(即,不仅使用导航器等从一个视图切换到另一个视图),都会创建一个新的UI实例。该UI实例将使用默认主题,除非有人再次显式运行setTheme(“某个主题”) 有两种不同的方法可以解决这个问题,具体取决于主题的持久性 一种方法是将@prese

我正在通过
ui.setTheme(“主题名”)
更改主题。它工作得很好,直到我改变了页面,然后又回到了默认页面。如何让它持久


每个页面类都有
@Theme
注释,默认主题的名称取自Spring的
应用程序.yml

之所以会出现这种情况,是因为每次在浏览器中加载新页面时(即,不仅使用导航器等从一个视图切换到另一个视图),都会创建一个新的UI实例。该UI实例将使用默认主题,除非有人再次显式运行
setTheme(“某个主题”)

有两种不同的方法可以解决这个问题,具体取决于主题的持久性

一种方法是将
@preserveonfresh
添加到
UI
子类中。这将使以前的UI实例在重新加载或临时导航到其他站点时被重用。如果用户关闭浏览器选项卡并稍后打开新选项卡,则不会保留UI和主题设置


另一种方法是显式地将用户的主题选择存储在某个位置,然后在用户登录后手动重新应用该设置,例如,
UI.init
。存储主题的两个最明显的候选对象是cookie或用户数据库。

受此问题的启发,我创建了一个插件,可以自动将主题名称存储在cookie中,并在打开应用程序时使用该设置。Vaadin的哪个版本?我使用的版本:8.5.2。通过编辑您的问题而不是作为评论提供更多详细信息。此外,还可以为Vaadin 8添加标记。