SpringBoot使用Thymeleaf3.0自定义标签

SpringBoot使用Thymeleaf3.0自定义标签,简单实例。快速学习!

此篇文章内容仅限于 描述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配置进去了


 
 
  1. @Configuration
  2. public class TemplateEngineConfig{
  3. @Bean
  4. public ContentNegotiatingViewResolver getViewResolver(){
  5. ServletContextTemplateResolver templateResolver= new ServletContextTemplateResolver();
  6. templateResolver.setPrefix( "/WEB-INF/views/");
  7. templateResolver.setSuffix( ".html");
  8. templateResolver.setTemplateMode( "HTML5");
  9. templateResolver.setCacheable( false);
  10. templateResolver.setCharacterEncoding( "UTF-8");
  11. Set<IDialect> additionalDialects= new LinkedHashSet<IDialect>();
  12. //自定义方言
  13. additionalDialects.add( new RiskDialect());
  14. SpringTemplateEngine templateEngine = new SpringTemplateEngine();
  15. templateEngine.setAdditionalDialects(additionalDialects);
  16. templateEngine.setTemplateResolver(templateResolver);
  17. ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
  18. thymeleafViewResolver.setTemplateEngine(templateEngine);
  19. thymeleafViewResolver.setCharacterEncoding( "UTF-8");
  20. thymeleafViewResolver.setOrder( 1);
  21. List<ViewResolver> viewResolvers= new ArrayList<>();
  22. viewResolvers.add(thymeleafViewResolver);
  23. ContentNegotiatingViewResolver viewResolver = new ContentNegotiatingViewResolver();
  24. viewResolver.setViewResolvers(viewResolvers);
  25. return viewResolver;
  26. }
  27. }

接下来看RiskDialect实现:

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


 
 
  1. package com.garc.thymeleaf.dialect;
  2. import org.springframework.stereotype.Component;
  3. import org.thymeleaf.dialect.AbstractDialect;
  4. import org.thymeleaf.dialect.AbstractXHTMLEnabledDialect;
  5. import org.thymeleaf.processor.IProcessor;
  6. import java.util.HashSet;
  7. import java.util.Set;
  8. /**
  9. * Created by Garc on 2018/1/17.
  10. */
  11. public class RiskDialect extends AbstractDialect {
  12. private static final String PREFIX= "risk";
  13. private static final String ELEMENT_NAME= "sanstitv";
  14. @Override
  15. public String getPrefix() {
  16. return PREFIX;
  17. }
  18. @Override
  19. public Set<IProcessor> getProcessors() {
  20. final Set<IProcessor> processors = new HashSet<>();
  21. processors.add( new SanstitvEncryptProcessor(ELEMENT_NAME));
  22. return processors;
  23. }
  24. }

继续看SanstitvEncryptProcessor这个类:

     


 
 
  1. package com.garc.thymeleaf.dialect;
  2. import org.springframework.context.ApplicationContext;
  3. import org.thymeleaf.Arguments;
  4. import org.thymeleaf.dom.Element;
  5. import org.thymeleaf.dom.Node;
  6. import org.thymeleaf.dom.Text;
  7. import org.thymeleaf.processor.ProcessorResult;
  8. import org.thymeleaf.processor.element.AbstractElementProcessor;
  9. import org.thymeleaf.processor.element.AbstractMarkupSubstitutionElementProcessor;
  10. import org.thymeleaf.spring4.context.SpringWebContext;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. /**
  14. * Created by Garc on 2018/1/17.
  15. */
  16. public class SanstitvEncryptProcessor extends AbstractMarkupSubstitutionElementProcessor {
  17. protected SanstitvEncryptProcessor(String elementName) {
  18. super(elementName);
  19. }
  20. @Override
  21. protected List<Node> getMarkupSubstitutes(Arguments arguments, Element element) {
  22. final Element container = new Element( "div");
  23. final Text text = new Text( "是的,这是测试");
  24. container.addChild(text);
  25. final List<Node> nodes = new ArrayList<>();
  26. nodes.add(container);
  27. return nodes;
  28. }
  29. @Override
  30. public int getPrecedence() {
  31. return 1000;
  32. }
  33. }
html使用方式:

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


 
 
  1. <!DOCTYPE html>
  2. <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
  3. xmlns:risk= "http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta content="text/html;charset=UTF-8"> </meta>
  6. <title>Title </title>
  7. </head>
  8. <body>
  9. <span th:text="${test}"> </span>
  10. <risk:sanstitv path="测试"> </risk:sanstitv>
  11. </body>
  12. </html>
以上内容就是全部教程,下班了。不编了! 如果想了解更多,可以加QQ群 119170668:亲自找我,我为你指导。群主就是我!
阅读更多
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值