欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot使用Thymeleaf自定义标签的实例代码

程序员文章站 2022-06-21 17:31:49
此篇文章内容仅限于 描述springboot与 thy 自定义标签的说明,所以你在看之前,请先会使用springboot和thymeleaf!!之前写过一篇是springmvc与thymeleaf 的...

此篇文章内容仅限于 描述springboot与 thy 自定义标签的说明,所以你在看之前,请先会使用springboot和thymeleaf!!

之前写过一篇是springmvc与thymeleaf 的自定义标签(属于自定义方言的属性一块,类似thy的th:if和th:text等)文章,如果你想了解,以下是地址:

点击>>thymeleaf3.0自定义标签属性

这篇例子可以实现你的分页标签实现等功能,不会讲一堆的废话和底层的原理(自行百度),属于快速上手教程,请认真看以下内容!

ps: 请允许我将thymeleaf简称thy,springboot简称sb

依然直奔主题,sb本身是自带thy的,而且使用方式也很简单,直接配置application.properties 这个文件就可以了,当然你不配也是可以的。但是,需要配置自定义方言的话,就需要自己把配置重新写出来,看下面代码:

说明:riskdialect是我自己的自定义标签,而且从这个配置可以简单看出,spring视图的配置通过注解的方式将thymeleaf配置进去了

@configuration
public class templateengineconfig{
 
 @bean
 public contentnegotiatingviewresolver getviewresolver(){
  servletcontexttemplateresolver templateresolver=new servletcontexttemplateresolver();
  templateresolver.setprefix("/web-inf/views/");
  templateresolver.setsuffix(".html");
  templateresolver.settemplatemode("html5");
  templateresolver.setcacheable(false);
  templateresolver.setcharacterencoding("utf-8");
  set<idialect> additionaldialects=new linkedhashset<idialect>();
  //自定义方言
  additionaldialects.add(new riskdialect());
  springtemplateengine templateengine = new springtemplateengine();
  templateengine.setadditionaldialects(additionaldialects);
  templateengine.settemplateresolver(templateresolver);
  thymeleafviewresolver thymeleafviewresolver = new thymeleafviewresolver();
  thymeleafviewresolver.settemplateengine(templateengine);
  thymeleafviewresolver.setcharacterencoding("utf-8");
  thymeleafviewresolver.setorder(1);
  list<viewresolver> viewresolvers= new arraylist<>();
  viewresolvers.add(thymeleafviewresolver);
  contentnegotiatingviewresolver viewresolver = new contentnegotiatingviewresolver();
  viewresolver.setviewresolvers(viewresolvers);
  return viewresolver;
 }
}

接下来看riskdialect实现:

说明:sanstitvencryptprocessor这个类是 thymeleaf处理器,用来处理定义方言逻辑的

package com.garc.thymeleaf.dialect;
 
import org.springframework.stereotype.component;
import org.thymeleaf.dialect.abstractdialect;
import org.thymeleaf.dialect.abstractxhtmlenableddialect;
import org.thymeleaf.processor.iprocessor;
 
import java.util.hashset;
import java.util.set;
 
/**
 * created by garc on 2018/1/17.
 */
public class riskdialect extends abstractdialect {
 
 private static final string prefix="risk";
 private static final string element_name="sanstitv";
 
 @override
 public string getprefix() {
  return prefix;
 }
 
 @override
 public set<iprocessor> getprocessors() {
  final set<iprocessor> processors = new hashset<>();
  processors.add(new sanstitvencryptprocessor(element_name));
  return processors;
 }
}

继续看sanstitvencryptprocessor这个类:

package com.garc.thymeleaf.dialect;
 
import org.springframework.context.applicationcontext;
import org.thymeleaf.arguments;
import org.thymeleaf.dom.element;
import org.thymeleaf.dom.node;
import org.thymeleaf.dom.text;
import org.thymeleaf.processor.processorresult;
import org.thymeleaf.processor.element.abstractelementprocessor;
import org.thymeleaf.processor.element.abstractmarkupsubstitutionelementprocessor;
import org.thymeleaf.spring4.context.springwebcontext;
 
import java.util.arraylist;
import java.util.list;
 
/**
 * created by garc on 2018/1/17.
 */
public class sanstitvencryptprocessor extends abstractmarkupsubstitutionelementprocessor {
 
 protected sanstitvencryptprocessor(string elementname) {
  super(elementname);
 }
 
 @override
 protected list<node> getmarkupsubstitutes(arguments arguments, element element) {
  final element container = new element("div");
  final text text = new text("是的,这是测试");
  container.addchild(text);
 
  final list<node> nodes = new arraylist<>();
  nodes.add(container);
  return nodes;
 }
 
 @override
 public int getprecedence() {
  return 1000;
 } 
}

html使用方式:

risk:sanstitv 是我自定义用的标签

<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
  xmlns:risk="http://www.w3.org/1999/xhtml">
 <head>
  <meta content="text/html;charset=utf-8"></meta>
  <title>title</title>
 </head>
 <body>
  <span th:text="${test}"></span>
  <risk:sanstitv path="测试"></risk:sanstitv>
 </body>
</html>

以上这篇springboot使用thymeleaf自定义标签的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。