SrpingBoot(六)——深入实践Thymeleaf

SpringBoot深入实践Thymeleaf

上一篇大致介绍了Thymeleaf的简单语法规则,这一篇就来对Thymeleaf进行使用。下边都是我通过实战测试后写出来的。

Thymeleaf是一个很强大的模板引擎,它基本可以替换所有的HTML标签的属性,因此我们可以在HTML的基础上进行修改,下边就说一说我在一次简单整合中遇到的一些常用的属性。

Thymeleaf的属性是覆盖在HTML上的

  1. 超链接(th:href),链接使用@{},可以看出在Thymeleaf中 / 就可以表示当前项目
 
  1. class属性(th:class),使用${}的原因是activeUri是自定义在Context中的需要用 ${} 取出来,并且在下面例子可以看出使用了三元运算

  1. name属性(th:name)

  1. select标签的name,值得注意的是,option的value和使用模板引擎来遍历,depts是我们在后台在Model中放的属性,dep是遍历depts的单个并且指定dep的id为value。
  
    //来到员工添加的页面
    @GetMapping(value = "/emp")
    public String addPage(Model model) {

        Collection departments = departmentDao.getDepartments();
        model.addAttribute("depts", departments);
        return "emp/add";
    }

  1. 单行显示,取出session的userKey属性
[[${session.userKey}]]
package com.wrial.demo.controller;

@Controller
@RequestMapping(value = "/user")
public class UserController {

    @PostMapping(value = "/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        Map map, HttpSession session) {
        if (!StringUtils.isEmpty(username) && !StringUtils.isEmpty(password) &&
                username.equals("wrial") && password.equals("123")) {
            map.put("msg", "登陆成功!");
            //配置拦截器进行安全检测
            session.setAttribute("userKey", username);
            //为了防止重复提交请求,使用重定向
            return "redirect:/main.html";
        } else {
            map.put("msg", "登陆失败,请重试");
            return "login";
        }
    }
}

  1. 公共模块抽取
    (1)使用feagment实现公共模块抽取


使用公共抽取页面,必须使用div包裹,第一种是插入因此外层还是div包裹,第二个是替代,外层就没有这个div包裹了(一般会使用第二种)

引入的格式~{},然后commons/bar(template目录下)是我的html页面的目录(Thymeleaf会自动解析为指定的HTMl),然后topbar也就是我上边feagment的值。

 

(2)使用id选择器实现公共模块抽取


使用id选择器,格式也是~{},commons/bar是template下的指定html文件,使用#选择在bar中的id为sidebar的模块,并且可以在小括号中传入属性。

  
  1. 使用put方式修改员工数据,必须是post请求然后根据指定的命名规则SpringBoot自动识别为是put请求。
       
                

  //信息修改
    @PutMapping("/emp")
    public String updateEmp(Employee employee) {

        //修改方法(是一个懒方法,在内部进行id判断,如果有id就是修改,没id就是增加)
        employeeDao.save(employee);
        System.out.println("update:" + employee);
        return "redirect:/emps";
    }
  1. 自定义属性,使用attr自定义属性
 
  1. 使用delete请求,必须为post请求,然后创建hidden属性,value是delete
 

 

使用Jquery删除


@DeleteMapping("/emp/{id}")
    public String deleteEmp(@PathVariable("id") Integer id) {
        employeeDao.delete(id);
        return "redirect:emps";
    }
  1. 读取配置文件,${name}是读的是Model中的name属性,#{success.mes}读的是配置文件中的属性(properties),因此一般可使用配置文件来做国际化页面。

你好!

123

SrpingBoot(六)——深入实践Thymeleaf_第1张图片

  1. if标签判断,not 是否定,使用#可以调用strings库来对msg进行判空判断

  1. 国际化
    SrpingBoot(六)——深入实践Thymeleaf_第2张图片
    SrpingBoot(六)——深入实践Thymeleaf_第3张图片
    下面是使用国际化进行登陆操作使用前面说过的#{}来取出国际化的值,也可以在请求的时候加上l属性标示是那个地区。

配置文件

server.port=8081

spring.thymeleaf.cache=false
server.servlet.context-path=/crud
spring.messages.basename=i18n.login
#指定日期格式化,也可以加上分和秒
spring.mvc.date-format=yyyy-MM-dd

SrpingBoot(六)——深入实践Thymeleaf_第4张图片
SrpingBoot(六)——深入实践Thymeleaf_第5张图片

这就是一些常用的标签,还有一些没说是因为用法都一样,就不多重复了!

你可能感兴趣的:(SpringBoot)