Spring Boot + Bootstrap + jQuery + Freemarker
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
Spring Boot + Bootstrap + jQuery + Freemarker的更多相关文章
- spring boot ----> 常用模板freemarker和thymeleaf
===========================freemarker=================================== freemarker 官网:https://freem ...
- 玩转spring boot——结合jQuery和AngularJs
在上篇的基础上 准备工作: 修改pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- Spring Boot+BootStrap fileInput 多图片上传
一.依赖文件 <link rel="stylesheet" type="text/css" th:href="@{/js/bootstrap/c ...
- Spring Boot使用模板freemarker【从零开始学Spring Boot(转)
视频&交流平台: à SpringBoot网易云课堂视频 http://study.163.com/course/introduction.htm?courseId=1004329008 à ...
- spring boot中使用freemarker
在做Java web开发领域,web模板引擎主要有jsp.freemarker.velocity,其中freemarker是我们常用的一种,在spring boot中使用的freemarker的方法可 ...
- Spring boot之使用freemarker
大纲 (1)在pom.xml中引入freemarker; (2)如何关闭freemarker缓存 (3)编写模板文件.ftl (4)编写访问文件的controller 在pom.xml中引入freem ...
- Spring Boot + Bootstrap 出现"Failed to decode downloaded font"和"OTS parsing error: Failed to convert WOFF 2.0 font to SFNT"
准确来讲,应该是maven项目使用Bootstrap时,出现 "Failed to decode downloaded font"和"OTS parsing error: ...
- Spring Boot +Bootstrap 图片上传与下载,以及在bootstrap-table中的显示
1.前台上传: <input type="file" name="file" id="file"> 2.后台的接收与处理: St ...
- Spring Boot + Freemarker多语言国际化的实现
最近在写一些Web的东西,技术上采用了Spring Boot + Bootstrap + jQuery + Freemarker.过程中查了大量的资料,也感受到了前端技术的分裂,每种东西都有N种实现, ...
随机推荐
- 每条sql语句实际上都是一个事物(事物多种类型解读)
事务(数据库引擎) 事务是作为单个逻辑工作单元执行的一系列操作.一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务.原子性事务必须是原子工 ...
- Vim常用又容易忘的命令
一篇讲的不错的教程 :noh 取消搜索高亮 x 删当前光标所在的一个字符. :wq 存盘 + 退出 dd 删除当前行,并把删除的行存到剪贴板里 p 粘贴剪贴板 a → 在光标后插入 /pattern ...
- hdu 2485 Destroying the bus stations 最小费用最大流
题意: 最少需要几个点才能使得有向图中1->n的距离大于k. 分析: 删除某一点的以后,与它相连的所有边都不存在了,相当于点的容量为1.但是在网络流中我们只能直接限制边的容量.所以需要拆点来完成 ...
- 应用Struts2框架,开发一个加法器,采用两个页面,一个页面输入数据,另一个界面输出结果。
软件152谭智馗 一.新建maven项目 1.选择菜单file—new—maven project,勾选“Create a &simple project (skip archetype se ...
- vue-cli 安装
1 node 下载 http://nodejs.cn/download/ 安装 2 npm install vue-cli -g 3 vue init <template-n ...
- 学习SQL笔记
SQL 语句 语法 AND / OR SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition ALTER TABLE A ...
- 计算机二级考试Access教程
本教程对编程语言各种要点进行详细的讲解介绍,从基础知识到实用技术功能,内容涵盖了从数组,类等基本概念到多态.模板等高级概念.教程本着实用的原则,每一小节都结合了可以笔试.面试的常见程序实例,以便从第一 ...
- TRS矩阵分解
transform = TRS T就是transform的最后一列.关于R和S的分解,PBRT给了一个公式:M_(i+1) = (M_i + ((M_i)^T)^(-1))*0.5,直到M收敛.M初始 ...
- ML一些简单的资源
参考文献及推荐阅读 维基百科,http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm: 机器学习中的相似性度量,http://www.cnb ...
- C# 分割URL地址
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_C ...