thymeleaf测试

thymeleaf是啥?

Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP定位类似。是运行在服务器端,不是运行在浏览器端的。所以和Vue不是一个定位,但是确实是一个生态位。换句话说,完全做到前后端分离之后,是不需要用Thymeleaf的,但是做一些简单的页面,可以混合开发。

怎么使用?

1.在Spring工程中引入依赖

在pom文件中,增加如下依赖:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

2.在工程中设置application.yml

server:
  port: 8080

# thymeleaf 模板
thymeleaf:
  # 开发阶段建议关闭缓存,生产阶段建议开启缓存
  cache: true
  # 编码方式
  encoding: UTF-8
  # 模板模式
  mode: HTML5
  # 指定模板页面路径,默认是 /templates
  # 不对用户开放,会报 404 错误,只能通过转发的方式进行访问
  prefix: classpath:/templates/
  # 后缀名
  suffix: .html

3.增加Controller方法

@SpringBootApplication
@RestController
public class ThymeleafDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(ThymeleafDemoApplication.class, args);
	}

	@RequestMapping(path = "/test.html")
	public ModelAndView toRegister(ModelAndView modelAndView, HttpServletRequest request, HttpServletResponse response){
//        modelAndView.addObject("username", request.getParameter("username"));
		//简单的keyvalue设置
		modelAndView.addObject("name","thymeleaf 测试页面");
		User user = new User("jim","19","0001110011");
            //添加bean对象
		modelAndView.addObject("user",user);
            //添加list对象
		List fruits = new ArrayList<String>();
		fruits.add("apple");
		fruits.add("banana");
		fruits.add("orange");
		modelAndView.addObject("fruits",fruits);
		modelAndView.setViewName("test");
		return modelAndView;
	}

}

在modelAndView对象中可以支持添加值、bean对象、List对象等。

4.在模板中使用这些值

<body>
<div id="vue_det" class="flexLayout" style="margin-top: 5px;">
    <div th:text="${name}">获取name的值</div>
    <div th:text="${user.getName()}"></div>
    <div th:text="${user.toString()}"></div>

    <h2>List取值</h2>
    <table bgcolor="#ffe4c4" border="1">
        <tr th:each="item:${fruits}">
            <td th:text="${item}"></td>
        </tr>
    </table>

    <div th:object="${user}" >
        <p th:text="*{name}">firstname</p>
    </div>

</div>
</body>

如何向js脚本中传值?

直接使用var m = ${message}; 是无法使用的。
需要使用th:inline="javascript"标注,表达式为:[[${message}]]

<script th:inline="javascript">  
  
    var message = [[${message}]];  
    console.log(message);  
 
</script>  
posted @ 2023-03-21 14:42  身带吴钩  阅读(53)  评论(0编辑  收藏  举报