目录
1、编写国际化配置文件
2、在application.yml中指定读取的国际化配置文件:
3、login.html
4、点击中文或者English切换语言
5、登录验证
国际化配置文件默认文件名称为:messages.properties,若是自己起的其他名称,则需要在application.yml中指定文件:
如:在resources目录下创建i18n目录,在i18n目录下面创建国际化配置文件,login.properties是默认国际化配置文件,login_en_US.propertoes 英文,login_zh_CN.properties中文,创建好之后IDEA会自动识别这些配置文件是国际化配置文件。
随便打开一个文件,点击下面的Resource Bundle可以添加字段和值,一次可以直接更改三个配置文件。
#国际化指定文件
spring:
messages:
basename: i18n.login
##message.propertiesi是默认的国际化配置文件,不需要特别指定路径
登陆页面
在页面中:
提示部分使用:
Please sign in
用户名:
密码:
记住我:
登陆按钮
效果:
4.1发出请求
//@{index.html(l='zh_CN')} 相当于http://localhost:8080/index.html?l=zh_CN
//而在后台,index.html映射的就是登陆页面
//registry.addViewController("/index.html").setViewName("login");
中文
English
4.2 自定义国际化处理组件
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
//获取请求参数
String parameter = httpServletRequest.getParameter("l");
//获取默认的locale
Locale locale = Locale.getDefault();
if(!StringUtils.isEmpty(parameter)) {
String[] strings = parameter.split("_");
//若请求参数不为空,则根据请求构造一个新的locale
locale = new Locale(strings[0], strings[1]);
}
//否则返回默认的locale
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
//找一个配置类,将自定义组件注入springboot中
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
效果:点击切换按钮可以完成语言的转换。
@Controller
public class LoginController {
@PostMapping("/user/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
HttpSession session, Model model) {
//简化登录流程
if(!StringUtils.isEmpty(username) && "123456".equals(password)) {
//登录成功,避免表单重复提交,使用重定向到主页
//将用户存入到session中
session.setAttribute("loginUser", username);
return "redirect:/main.html";
}
//登录失败,返回登录页面
model.addAttribute("msg", "用户名或密码错误!");
return "login";
}
}
在login.html中显示错误信息使用了:
${not #strings.isEmpty(msg)}即在msg为空的情况下不显示该标签
效果:
注意:开发期间模板引擎要实时生效
在application.yml中关闭thymeleaf的缓存:
spring:
thymeleaf:
cache: false
并且在页面修改完成后,按住ctrl+F9重新编译。