thymeleaf学习日志

thymeleaf介绍

Thymeleaf模板Spring boot 官方推荐使用来代替jsp,是一款用于渲染
XML / XHTML / HTML5内容的模板引擎。类似JSP,Velocity,FreeMaker等,它也可以轻松的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。与其它模板引擎相比,Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个的Web应用它的功能特性如下:

  1. 将Spring MVC @Controller对象中的映射方法转发到由Thymeleaf管理的模板,就像使用JSP一样。

  2. 在模板中使用Spring表达式语言(Spring EL)而不是OGNL。在您的模板中创建与表单支持bean和结果绑定完全集成的表单,包括

  3. 使用属性编辑器,转换服务和验证错误处理。

  4. 从Spring管理的消息文件中显示国际化消息(通过通常的MessageSource对象)。

环境的搭建

使用maven构建项目 pox.xml配置:

 
        4.3.6.RELEASE
        3.1.0
        2.3.1
        1.2
        1.16.18
        1.2.44
        3.0.8.RELEASE
     

    
        
            org.projectlombok
            lombok
            ${lombok.version}
        


        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
        
            javax.servlet
            javax.servlet-api
            ${servlet.version}
        

    
        
            org.thymeleaf
            thymeleaf
            ${thymeleaf.version}
        
        
        
           org.thymeleaf
           thymeleaf-spring4
           ${thymeleaf.version}
        

        
            com.alibaba
            fastjson
            ${fastjson.version}
        

        
            junit
            junit
            4.12
            test
        
    
    
        
            
                
                    org.apache.maven.plugins
                    maven-war-plugin
                    2.4
                    
                        src/main/webapp
                        mvc
                        false
                    
                
            
        
        mvc

springmvc配置thymeleaf 基于javaconfig方式配置


import java.util.List;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.TemplateResolution;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

@Configurable
@EnableWebMvc
@ComponentScan("com.ting.springmvc.config")
public class WebAppServletConfigureion extends WebMvcConfigurerAdapter implements ApplicationContextAware{`
    
    private ApplicationContext applicationContext;
    
    
    public ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public void setApplicationContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    /**
     * thymeleaf 视图解析器
     * @return
     */
    @Bean
    public ViewResolver viewResolve() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        resolver.setOrder(1);
        resolver.setCharacterEncoding("UTF-8");
        return resolver;
    }
    
    /**
     * 模板解析引擎
     * @return
     */
    @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setApplicationContext(this.applicationContext);
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCacheable(false);
        return templateResolver;
    }
    /**
     * 模板引擎
     * @param templeateResolver
     * @return
     */
    @Bean
    public TemplateEngine templateEngine() {
       SpringTemplateEngine templateEngine = new SpringTemplateEngine();
       templateEngine.setTemplateResolver(templateResolver());
       templateEngine.setEnableSpringELCompiler(true);
       return templateEngine;
    }
    /*@Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new 
                 InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/view/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }*/

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        // TODO Auto-generated method stub
        //配置静态资源的处理
        configurer.enable();
    }

    @Override
    public void configureMessageConverters(List> converters) {
        converters.add(converter());
    }
    
    @Bean
    public FastJsonHttpMessageConverter converter() {
        FastJsonHttpMessageConverter converter = new 
                FastJsonHttpMessageConverter();
        List list = new ArrayList<>();
        list.add(MediaType.APPLICATION_JSON_UTF8);
        list.add(MediaType.TEXT_HTML);
        converter.setSupportedMediaTypes(list);
        converter.setDateFormat("yyyy-MM-dd HH:mm:ss");
        converter.setFeatures(SerializerFeature.WriteNullStringAsEmpty
                ,SerializerFeature.WriteMapNullValue);
        return converter;
    }
    
}

在WEB-INF/templates/下创建index.html


thymeleaf学习日志_第1张图片
图片.png

在html添加点内容,测试配置构建是否成功





配置测试


   

hello thymeleaf

测试中文

在controller 添加方法index方法,跳转页面到index.html中


    @GetMapping("index")
    public String index(Model model) {
        model.addAttribute("ting", "数据域测试");
        return "index";
    }

打开浏览器方法访问index的url,看见出现下图,表示springmvc+thymeleaf配置成功


thymeleaf学习日志_第2张图片
图片.png

标准表达式语法

简单表达式 (simple expressions)

${...} 变量表达式

*{...} 选择变量表达式

#{...} 消息表达式

@{...} 链接url表达式

thymeleaf简单功能介绍

遍历
 
  • 列表/li>

str是list遍历生成的局部变量,strStat是状态变量,如果不写的话,默认值就是${局部变量值}+Stat
1. index:当前迭代对象的index(从0开始计算)
2. count: 当前迭代对象的index(从1开始计算)
3. size:被迭代对象的大小
4. current:当前迭代变量
5. even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算)
6. first:布尔值,当前循环是否是第一个
7. last:布尔值,当前循环是否是最后一个

格式化
 

时间

保留两位小数
条件表达式
  
wei真就可以展示内容

th:if不仅判断返回为true的表达式,还判断一些特殊的表达式。

如果值非NULL得话返回true:
    如果值是boolean类型并为TURE.
    如果值是数值型并不为0.
    如果值是字符型并不为空.
    如果值是字符型并且内容不为“false”, “off” 或者 “no”。
    如果值不是上述类型。
如果值是NULL得话返回false;

你可能感兴趣的:(thymeleaf学习日志)