Spring Boot 菜鸟教程 16 数据国际化
2016-12-05 21:54
519 查看
GitHub
internationalization(i18n)
国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。
换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。
开发这样的程序的过程,就称为国际化。
数据国际化
* 关键的思路是从请求作用域获取locale,然后查询对应的数据*中文语言数据页面:只有中文数据
英文语言数据页面:只有英文数据
浏览器切换中文,英文
模型对象User
@Entity @Table(name = "t_user") public class User { @Id @GeneratedValue private Long id; private String name; private Integer age; private String locale;//通过此字段查询对应的数据
初始化类InitApplicationListener
package com.jege.spring.boot.controller; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; import com.jege.spring.boot.data.jpa.entity.User; import com.jege.spring.boot.data.jpa.repository.UserRepository; /** * @author JE哥 * @email 1272434821@qq.com * @description:spring的事件监听器的处理机制:在启动服务器的时候,插入默认数据 */ @Component public class InitApplicationListener implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { ApplicationContext context = event.getApplicationContext(); UserRepository userRepository = context.getBean("userRepository", UserRepository.class); User user; for (int i = 1; i < 21; i++) { if (i % 2 == 0) { user = new User("je哥" + i, 25 + i); user.setLocale("zh"); } else { user = new User("je-ge" + i, 25 + i); user.setLocale("en"); } userRepository.save(user); } } }
控制器类UserController
// 从user.jsp列表页面由easyui-datagrid发出ajax请求获取json数据 @RequestMapping("/json") @ResponseBody public Map<String, Object> json(@RequestParam(name = "page", defaultValue = "1") int page, @RequestParam(name = "rows", defaultValue = "10") int rows, final String q, HttpServletRequest request) { // 按照id降序 Sort sort = new Sort(Sort.Direction.DESC, "id"); // 封装分页查询条件 Pageable pageable = new PageRequest(page - 1, rows, sort); // 拼接查询条件 Specification<User> specification = new Specification<User>() { @Override public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) { List<Predicate> list = new ArrayList<Predicate>(); if (!StringUtils.isEmpty(q)) { list.add(cb.like(root.get("name").as(String.class), "%" + q + "%")); } if (request.getLocale().toString().contains("en")) { list.add(cb.like(root.get("locale").as(String.class), "%en%")); } else { list.add(cb.like(root.get("locale").as(String.class), "%zh%")); } Predicate[] p = new Predicate[list.size()]; return cb.and(list.toArray(p)); } }; return findEasyUIData(userRepository.findAll(specification, pageable)); }
其他关联项目
Spring Boot 菜鸟教程 15 页面国际化http://blog.csdn.net/je_ge/article/details/53434761
Spring Boot 菜鸟教程 7 EasyUI-datagrid
http://blog.csdn.net/je_ge/article/details/53365189
源码地址
https://github.com/je-ge/spring-boot如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡。
您的支持将鼓励我继续创作!谢谢!
相关文章推荐
- Spring Boot 菜鸟教程 5 热部署 devtools模块
- Spring Boot 菜鸟教程 14 动态修改定时任务cron参数
- Spring Boot 菜鸟教程 27 内置tomcat访问https
- SpringBoot基础教程2-1-8 数据验证-自定义日期格式验证
- spring boot easyui菜鸟教程(01)——datagrid增删改查
- Spring Boot 菜鸟教程 7 EasyUI datagrid
- SpringBoot菜鸟教程(一)
- spring boot新手教程之使用FastJson解析JSON数据以及解决返回中文乱码问题
- Spring Boot 菜鸟教程 application.properties 常用配置
- SpringBoot基础教程2-1-7 数据验证-基础数据验证
- Spring Boot 菜鸟教程 9 swagger-前后端分离后的标准
- Spring Boot 菜鸟教程 22 Redis
- Spring Boot 菜鸟教程 18 itext导出pdf下载
- Spring Boot 菜鸟教程 28 多配置文件
- Spring Boot 菜鸟教程 3 MyBatis
- Spring Boot 菜鸟教程 12 EasyPoi导出Excel下载
- Spring Boot 菜鸟教程 异常 集锦
- Spring Boot 菜鸟教程 21 分布式会话
- Spring Boot教程(二十八)通过JdbcTemplate编写数据访问
- spring boot学习教程(6):使用JPA保存数据