springboot集成thymeleaf

引入依赖

springboot集成thymeleaf_第1张图片

 
    
        org.springframework.boot
        spring-boot-starter-thymeleaf
    
    
    
        org.hibernate.validator
        hibernate-validator
        6.0.18.Final
    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
        org.projectlombok
        lombok
        1.18.12
    

application.yml

spring:
  thymeleaf:
    cache: false # 禁用缓存(建议开发关闭,生产环境开启)
    prefix: classpath:/templates/ # 配置静态模板引擎的位置
    suffix: .html # 配置后缀名称

UserController

package com.interceptor.testinterceptor.controller;

import com.interceptor.testinterceptor.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;
import java.util.*;

@Controller
@RequestMapping("user")
public class UserController {
    @GetMapping("show")
    public String test(Model model) {
        model.addAttribute("data","模板数据");
        return "show";
    }

    @GetMapping("user")
    public ModelAndView user() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("variable");
        User user = new User();
        user.setId(3430L);
        user.setName("小雪");
        user.setAge(30);

        mv.addObject("user",user);
        return mv;
    }

    @GetMapping("add")
    public String add() {
        return "form";
    }

    @GetMapping("js")
    public String js(ModelMap modelMap) {
        modelMap.put("data","js中获取值");
        return "js";
    }

    @PostMapping("save")
    public String save(@Valid User user, BindingResult result, ModelMap modelMap) {
        //System.out.println(result.getAllErrors().size());
        //result.getFieldErrors().stream().forEach(n-> System.out.println(n.getField()+","+n.getDefaultMessage()));
        if (result.hasErrors()) {
            result.getFieldErrors().stream().forEach(n-> modelMap.put(n.getField(),n.getDefaultMessage()));
            modelMap.remove("user");
        } else {
            modelMap.put("user", user);
        }

        return "form";
    }

    @GetMapping("assembly")
    public String assembly(Model model) {
        // 创建List集合
        List userList = Arrays.asList(
                new User(10001L,"王五",43),
                new User(10002L,"张柳",20),
                new User(10003L,"骑闪",24),
                new User(10004L,"刘昂",64)
        );
        // 创建Map集合
        Map userMap = new HashMap<>();
        userMap.put(40001, new User(30001L,"王五",43));
        userMap.put(40002, new User(30002L,"五阿哥",54));
        userMap.put(40003, new User(30003L,"砌墙图",14));
        // 创建复杂集合
        // 创建复杂集合List->Map->List->User
        List>> mapList = new ArrayList<>();
        for (int i = 0; i < 2; i++) {
            Map> map = new HashMap<>();
            for (int i1 = 0; i1 < 2; i1++) {
                List users = new ArrayList<>();
                for (int i2 = 0; i2 < 3; i2++) {
                    User user = new User(i2 + 11L, "张三" + i2, 32 + i);
                    users.add(user);
                }
                map.put(i1+1, users);
            }
            mapList.add(map);
        }

        model.addAttribute("users", userList);
        model.addAttribute("userMap", userMap);
        model.addAttribute("mapList", mapList);

        return "assembly";
    }
}

User

package com.interceptor.testinterceptor.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @NotNull(message="ID不能为空")
    private Long id;
    @Size(max = 15,min = 6,message = "名字长度必须为{min}~{max}之间")
    private String name;
    @Range(min = 18,max = 80,message = "年龄必须在{min}~{max}之间")
    @NotNull(message = "年龄不能为空")
    private Integer age;
}

assembly.html




    集合处理


    
List集合
编号:
姓名:
年龄:

Map集合
行号:
编号:
姓名:
年龄:

List->map-list-user复杂集合的变量
编号:
姓名:
年龄:
有小孩了吗? 谈朋友了吗? 111 112 113
------------------------------------------------

form.html




    
    表单元素


    
编号:
姓名:
年龄:
添加的数据 编号:
姓名:
年龄:

js.html




    
    JS相关
    
    


    

简单引入

内敛标签

th:inline

数据:[[${data}]]

外部数据:[[${data}]]

内敛脚本:th:javascript

show.html




    
    简单应用


    

variable.html




    
    变量表达式


    

对象变量

标准变量表达式${}【推荐使用】 编号:
姓名:
年龄:
选择变量表达式*{} 编号:
姓名:
年龄:
混合表达式*{} 【建议不使用】 编号:
姓名:
年龄:

URL路径变量

绝对路径@{.....} 跳转到新浪
访问初始主页
相对路径@{.....} 访问初始主页->相对路径
标准变量页面->相对路径
相对路径@{.....} 带参数 URL带一个参数
URL带多个参数
RESTful方式
RESTful方式->占位符替换[针对单个id处理]

获取页面路径

你可能感兴趣的:(springboot,js,javascript)