thymeleaf没有自动渲染

Thymeleaf使用

源码:
thymeleaf没有自动渲染_第1张图片

导入名称空间

<html lang="en" xmlns:th="http://www.thymeleaf.org">

使用相关语法

 
<html lang="en" xmlns:th="http://www.thymeleaf.org"> 
<head>    
 <meta charset="UTF‐8">
      <title>Titletitle> 
 head> 
  <body>     
  <h1>成功!h1>  
     <!‐‐th:text 将div里面的文本内容设置为 ‐‐>    
      <div th:text="${hello}">这是显示欢迎信息div>
       body>
html>

Maven配置

       <thymeleaf.version>3.0.11.RELEASEthymeleaf.version>
        
        
        <thymeleaf-layout-dialect.version>2.2.2thymeleaf-layout-dialect.version>
		
		
			
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-thymeleafartifactId>
        dependency>

controller

错误示范:

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Map;

@Controller
public class hello {
     

    @ResponseBody
    @RequestMapping("/success")
    public String success(Map<String,Object> map){
     
        map.put("hello","你好");
        return "success";
    }
}

原因是:

  @ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
  注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。使用RestController也会遇到同样的问题.
  而Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎的Thymeleaf主要作用是把model中的数据渲染到html中,因此其语法主要是如何解析model中的数据。因此它得不到用@responsebody注解的方法里返回的数据。

正确代码:

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Map;

@Controller
public class hello {
     


    @RequestMapping("/success")
    public String success(Map<String,Object> map){
     
        map.put("hello","你好");
        return "success";
    }
}

成功结果图

thymeleaf没有自动渲染_第2张图片

你可能感兴趣的:(开发遇到的坑,java,spring,json,html)