Spring Boot + Bootstrap + jQuery + Freemarker

原文地址:http://qilu.me/post/tech/2018-03-18

最近在写一些Web的东西,技术上采用了Spring Boot + Bootstrap + jQuery + Freemarker。过程中查了大量的资料,也感受到了前端技术的分裂,每种东西都有N种实现,组合起来,每种解决方案的资料却很有限。

这篇文章记录下多语言国际化的实现,以支持中英文为例。

首先是页面内容的国际化

1.定义页面文本配置文件的路径,在application.properties里添加spring.messages.basename=i18n/messages

2.在resources/目录下创建上述目录,添加3个配置文件messages.properties、messages_zh.properties、messages_en.properties,分别对应默认,中文和英文配置,完整路径为resources/i18n/messages.properties

3.在配置文件里定义每条需要国际化的文本,比如中文 index.title=麦希工具 - 您身边的助手,英文Meta Tool - Your Best Assistant

4.在Freemarker文件里使用<@spring.message ""/>来输出文本,比如<@spring.message "index.title"/>

再说下验证内容的国际化

所谓验证内容,就是比如在填Form表单的时候,有些字段有格式或数值等的要求,表单提交时,应该验证数据是否符合要求。验证又分前端验证和后端验证,一般结合使用。

前端用来验证格式(必须是数字/英文/邮件)等,如:

这里pattern使用正则表达式,定义了输入框输入字符的范围和数量。

后端用来验证数值(必须大于18岁)等,可以在Spring Boot的VO对象里,以添加注解的形式实现,如:

@Min(value = 100, message = "不能低于100cm")
@Max(value = 250, message = "不能高于250cm")
private String height;

这里就出现了问题,即注解也应该采用配置文件的形式,以支持多语言切换,这就是验证内容的国际化。

1.定义验证文本配置文件的路径,在application.properties里添加spring.messages.basename=i18n/messages,i18n/ValidationMessages,前面的是第一节的页面文本,后面的是验证文本

2.在resources/目录下创建上述目录,添加3个配置文件ValidationMessages.properties、ValidationMessages_zh.properties、ValidationMessages_en.properties,分别对应默认,中文和英文配置,完整路径为resources/i18n/ValidationMessages.properties

3.在配置文件里定义每条需要国际化的文本,比如中文 vm.bmi.height.lower=不能低于100cm,英文vm.bmi.height.lower=Can Not Lower Than 100cm

4.与页面文本相比,这里要多做一步,即在代码里覆盖默认验证器的配置,在代码根目录添加以下文件:

@Configuration

public class CustomConfiguration implements WebMvcConfigurer {

@Autowired
private MessageSource messageSource; @Override
public Validator getValidator() {
return localValidatorFactoryBean();
} @Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource(messageSource);
return validator;
}

}

5.在接收表达的VO对象的属性上,使用验证文本作为提示

public class BmiVo {

@Min(value = 100, message = "{vm.bmi.height.lower}")
@Max(value = 250, message = "{vm.bmi.height.upper}")
private String height;

6.在表单上添加验证失败后的提示,使用<@spring.bind "" />绑定VO对象的属性,使用<@spring.showErrors ""/>显示属性验证失败的提示

cm

这样就做到了页面内容和验证内容的多语言国际化支持,具体示例参看Meta Tool

最新文章

  1. Markdown:让书写更美好
  2. ubuntu下安装JDK并搭建activeMQ
  3. leetcode 4 : Median of Two Sorted Arrays 找出两个数组的中位数
  4. 转载-MySQL 加锁处理分析
  5. [转载]MVC3缓存:使用页面缓存
  6. 2 hive的使用 + hive的常用语法
  7. Eclipse里的智能提示
  8. Angular JS 学习笔记(二)
  9. Android 消息传递之Bundle的使用——实现object对象传输(二)
  10. Zabbix概念、安装以及快速入门
  11. 一个combineInputformat
  12. virtual与static
  13. JavaScript那些事
  14. vxworks开发中simulator的使用之建立虚拟网卡
  15. Java 后台验证的工具类
  16. 从零开始一起学习SLAM | 三维空间刚体的旋转
  17. HTTP中Get、Post、Put与Delete。了解一下!
  18. 【Go命令教程】12. go tool pprof
  19. [svc][cpu][jk]cpu的核心查看及什么是cpu的负载
  20. 用zcat查看压缩日志中百度抓取的量

热门文章

  1. HTML与CCS(十一)
  2. Css float 盒子模型 position
  3. MSSQL数据库设置单用户模式后无法连上解决办法
  4. 使用一行代码解决IE浏览器兼容问题
  5. SVD分解.潜语义分析.PythonCode
  6. a rel=noopener
  7. mindmanager 2018 中文破解版_注册码_免激活
  8. 优动漫PAINT漫画和插画方面软件特色
  9. 10件5G能实现,但4G不能做的事情
  10. 路飞学城Python-Day52