thymeleaf介绍
Thymeleaf模板Spring boot 官方推荐使用来代替jsp,是一款用于渲染
XML / XHTML / HTML5内容的模板引擎。类似JSP,Velocity,FreeMaker等,它也可以轻松的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。与其它模板引擎相比,Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个的Web应用它的功能特性如下:
将Spring MVC @Controller对象中的映射方法转发到由Thymeleaf管理的模板,就像使用JSP一样。
在模板中使用Spring表达式语言(Spring EL)而不是OGNL。在您的模板中创建与表单支持bean和结果绑定完全集成的表单,包括
使用属性编辑器,转换服务和验证错误处理。
从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
在html添加点内容,测试配置构建是否成功
配置测试
hello thymeleaf
测试中文
在controller 添加方法index方法,跳转页面到index.html中
@GetMapping("index")
public String index(Model model) {
model.addAttribute("ting", "数据域测试");
return "index";
}
打开浏览器方法访问index的url,看见出现下图,表示springmvc+thymeleaf配置成功
标准表达式语法
简单表达式 (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;