国际化
- 编辑国际化配置文件
- 使用ResourceBundleMessageSource管理国际化资源文件
- 在页面使用fmt:message取出国际化内容
创建resources/i18n
然后创建login_zh_CN.properties 选择Resouerce Bundle
SpringBoot自动创建了管理国际化资源文件的组件
1 |
|
1 | /** |
1 | spring.messages.basename = i18n.login |
thymeleaf 取国际化信息
使用#{}
1 | <h1 class="..." th:text="#{login.tip}">Please sign in</h1> |
解决乱码
setting - editor - fileEncoding - utf8 - 自动转阿斯克码
测试
在浏览器中选择浏览器默认的语言就可以了,即他可以根据浏览器的语言信息设置语言了
如何实现点按钮实现不同语言呢
国际化原理
locale: LocaleResolver
根据请求头的区域信息来进行国际化
1 |
|
1 |
|
先写个链接把区域信息加上去
1 | <a class="..." th:href="@{/index.html(l='zh_CN')}">中文</a> |
然后自己实现区域信息解析器
1 |
|
1 | package com.wsx.springboothelloworld.component; |
处理post
1 | package com.wsx.springboothelloworld.controller; |
简化写法
1 | package com.wsx.springboothelloworld.controller; |
如果成功就进入dashborad,否则就提示用户名密码错误, 考虑使用map实现
这一步后我们可能会碰到一些问题,这是缓存导致的,加入下面的配置
1 | spring.thymeleaf.cache=false |
然后ctrl+f9手动加载html到编译的文件中,这不必重新开启Spring了
做一个判断来决定标签是否生效
1 | <p style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p> |
表单重复提交问题。需要用重定向、视图、拦截器解决,重定向加视图能确保没有重复提交,但是会导致直接跳过登陆的问题,
拦截器
创建拦截器
1 | package com.wsx.springboothelloworld.component; |
将登陆成功的用户放入seesion
1 | public class LoginController { |
springboot已经做好了静态资源,不用管他们,不会被拦截, 注意addPathPatterns.excludePathPatterns可以一直搞下去,拦截所有的页面,放行两个html
1 |
|
- 本文作者: fightinggg
- 本文链接: http://fightinggg.github.io/yilia/yilia/Q94EMK.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!