如果需要在项目中进行按钮自动转换,我们需要自定义一个组件LocaleResolver
public class MyLocaleResolver implements LocaleResolver { //解析请求 @Override public Locale resolveLocale(HttpServletRequest httpServletRequest) { //获取请求中的语言参数 String language = httpServletRequest.getParameter("l"); Locale locale = Locale.getDefault();//如果没有就使用默认的 //如果请求的链接携带了国际化参数 if(!StringUtils.isEmpty(language)){ //zh_CN String[] s = language.split("_"); //国家 地区 locale= new Locale(s[0],s[1]); } return locale; } @Override public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) { } }记得将自己写的组件配置到spring容器中@Bean
@Configuration public class MyConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("login"); registry.addViewController("/login.html").setViewName("login"); } //自定义的国际化组件就生效了 @Bean public LocaleResolver localeResolver(){ return new MyLocaleResolver(); } }#{}
登录Controller
@Controller public class LoginController { @RequestMapping("/user/login") //@ResponseBody public String login( @RequestParam("username") String username, @RequestParam("password")String password, Model model, HttpSession httpSession){ //具体的业务 if(!StringUtils.isEmpty(username)&& "123456".equals(password)){ httpSession.setAttribute("loginUser",username); // return "index"; return "redirect:/main.html"; }else{ model.addAttribute("msg","登录失败!!!"); return "redirect:/login.html"; } } }拦截器
public class LoginHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //登录成功后,应该有用户的session Object loginUser = request.getSession().getAttribute("loginUser"); if (loginUser == null) { request.setAttribute("msg", "没有权限,请先登录"); request.getRequestDispatcher("/login.html").forward(request, response); return false; } else { return true; } } }提取公共页面
th:fragment=“top” (这个top可以是任意的参数XXX)
th:replace="~{commons/commons::top}"
如果要使用参数可以使用()传参,接收判断即可
传参:(index.html)
<div th:replace="~{commons/commons::xxx(active='list.html')}"></div>接收判断:(commons.html)
<li> <a th:class="${active=='list.html'?'nav-link active':'nav-link'}" th:href="@{/emps}"> <span>员工管理</span> </a> </li>列表循环展示
<tr th:each="emp:${emps}"> <td th:text="${emp.getId()}"></td> <td >[[${emp.getLastName()}]]</td> <td th:text="${emp.getEmail()}"></td> <td th:text="${emp.getGender()==0?'女':'男'}"></td> <td th:text="${emp.department.getDepartmentName()}"></td> <td th:text="${#dates.format(emp.getBirth(),'yyyy-MM-dd HH:mm:ss')}"></td> <td> <button class="btn btn-sm btn-primary">编辑</button> <button class="btn btn-sm btn-danger">删除</button> </td> </tr>