Vaadin页面标题本地化问题:注解失效如何解决?
Vaadin页面标题本地化实现方案
@PageTitle注解仅支持静态字符串赋值,不具备自动解析i18n消息源表达式的能力,所以直接传入${user.account}会被当作原始文本显示,无法触发消息解析。- 要实现页面标题的本地化,必须实现
HasDynamicTitle接口,通过该接口的动态方法读取i18n消息源中的对应值。
示例代码(Spring整合场景)
@Route(URL) @RolesAllowed({"ADMIN", "EMPLOYEE"}) public class AccountEditorView extends VerticalLayout implements HasDynamicTitle { private final MessageSource messageSource; // 构造函数注入Spring MessageSource public AccountEditorView(MessageSource messageSource) { this.messageSource = messageSource; // 视图初始化逻辑 } @Override public String getPageTitle() { // 获取当前UI的Locale Locale currentLocale = UI.getCurrent().getLocale(); // 从消息源获取本地化标题,"user.account"对应i18n配置文件中的键 return messageSource.getMessage("user.account", null, currentLocale); } }
非Spring场景补充
如果未整合Spring,可通过Vaadin自带的I18NProvider实现消息解析:
@Override public String getPageTitle() { I18NProvider i18nProvider = VaadinSession.getCurrent().getI18NProvider(); Locale currentLocale = UI.getCurrent().getLocale(); return i18nProvider.getTranslation("user.account", currentLocale); }
内容的提问来源于stack exchange,提问作者Felix Schildmann
相关产品推荐
相关产品推荐

