当前位置: 移动技术网 > IT编程>开发语言>Java > SpringBoot使用Thymeleaf自定义标签的实例代码

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

2020年09月19日  | 移动技术网IT编程  | 我要评论
此篇文章内容仅限于 描述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自定义标签的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网