Vaadin 23.3.21中@Theme注解及@JsModule失效问题求助
Vaadin 23.3.21中@Theme注解及Lumo预设失效问题排查
1. 确认AppShellConfigurator类的配置有效性
- 确保你的配置类正确继承AppShellConfigurator,并且添加了对应环境的作用域注解:Spring环境用
@ApplicationScoped,CDI环境用@Dependent,否则框架无法识别该配置类。
正确示例结构:@Theme(value = "material") @JsModule("@vaadin/lumo-styles/presets/compact.js") @ApplicationScoped public class AppShell implements AppShellConfigurator { }
2. 检查Material主题依赖是否引入
Vaadin Material主题需要单独添加依赖,默认Starter项目仅包含Lumo主题:
- Maven项目在
pom.xml中添加:<dependency> <groupId>com.vaadin</groupId> <artifactId>vaadin-material-theme</artifactId> <version>23.3.21</version> </dependency> - Gradle项目添加:
缺少该依赖时,框架会自动回退到Lumo主题,导致implementation 'com.vaadin:vaadin-material-theme:23.3.21'@Theme("material")配置无效。
3. 清除缓存
- 浏览器端:强制刷新页面(Ctrl+Shift+R / Cmd+Shift+R),或直接清除浏览器缓存,避免旧主题资源被缓存。
- 项目端:执行构建工具的clean命令,比如Maven的
mvn clean install、Gradle的gradle clean build,清除旧编译产物和前端资源缓存。
4. 修正Lumo Dark变体的配置方式
启用Lumo Dark变体不能直接修改@Theme的value,需通过variant属性或页面配置实现:
- 方式一:通过
@Theme注解@Theme(value = Lumo.class, variant = Lumo.DARK) - 方式二:实现
PageConfigurator接口public class AppShell implements AppShellConfigurator, PageConfigurator { @Override public void configurePage(Page page) { page.addClassNames(Lumo.DARK); } }
5. 修正Lumo预设的JsModule路径
Vaadin 23.x中,Lumo预设的路径已调整,旧路径@vaadin/vaadin-lumo-styles/presets/compact.js已废弃,正确路径为:
@JsModule("@vaadin/lumo-styles/presets/compact.js")
6. 排查自定义主题覆盖
如果项目存在frontend/themes/your-theme自定义主题目录,需检查theme.json是否强制指定Lumo主题,若有则会覆盖@Theme注解配置。可暂时删除自定义主题目录测试是否恢复正常。
内容的提问来源于stack exchange,提问作者Tullio
相关产品推荐
相关产品推荐

