vaadin - 改变主题不是持久的 Vaadin
问题描述
我正在改变主题ui.setTheme("theme-name")
。在我更改页面之前它工作得很好 - 然后它会回到默认页面。如何让它持久化?
每个页面类都有@Theme
注释,默认主题名称取自 Spring 的application.yml
.
解决方案
发生这种情况是因为每次在浏览器中加载新页面(即不仅使用 Navigator 从一个视图更改为另一个视图),都会创建一个新的 UI 实例。该 UI 实例将使用默认主题,除非有人setTheme("some-theme")
再次明确运行。
根据您希望主题的持久性,有几种不同的方法可以解决此问题。
一种方法是添加@PreserveOnRefresh
到您的UI
子类中。这将使以前的 UI 实例在重新加载或临时导航到其他站点时重用。如果用户关闭浏览器选项卡并稍后打开一个新选项卡,它将不会保留 UI 和主题设置。
另一种方法是您将用户的主题选择显式存储在某处,然后手动重新应用该设置,例如UI.init
或在用户登录后。存储此设置的两个最明显的候选者是在 cookie 或用户数据库中。
推荐阅读
- r - 在 R 中使用 PreSummarized 数据创建 BoxPlot
- java - 如何改进我的服务器和客户端“SMTP”代码?
- c - 当输入为浮点数时如何停止scanf解析整数部分
- javascript - 没有可用代理时的 Salesforce 聊天对话内容
- mysql - 多对多关系实体双重间接外键问题
- php - 如何通过 html、json 和 php 中的输入帖子添加到列表?(不使用数据库)?
- winapi - 监控光驱(WIN32)的读/写活动?
- html - 即使在两个“align-items:center; justify-content:center”之后,搜索栏内容也没有固定在中心
- android - SoundPool 与 ImageView 的用法类似 Switch
- java - 获取主要方法问题但主要方法存在吗?