SpringBoot2中使用thymeleaf3自定义分页方言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot2中使用thymeleaf3自定义分页方言相关的知识,希望对你有一定的参考价值。

参考技术A ### 1、定义方言Dialect

继承AbstractProcessorDialect

```

public class PagingDialect extends AbstractProcessorDialect

    private static final String DIALECT_NAME = "PagingDialect";//定义方言名称

    public PagingDialect()

        super(DIALECT_NAME, "paging", StandardDialect.PROCESSOR_PRECEDENCE);

        //优先级:值必须为:StandardDialect.PROCESSOR_PRECEDENCE

   

    @Override

    public Set getProcessors(String dialectPrefix)

        Set processors = new HashSet();

        //添加我们定义的标签

        processors.add(new PagingTagProcessor(dialectPrefix));

        processors.add(new StandardXmlNsTagProcessor(TemplateMode.html, dialectPrefix));

        return processors;

   



```

### 2、添加自定义处理程序Processor

继承AbstractElementTagProcessor

```

public class PagingTagProcessor extends AbstractElementTagProcessor

    private static final String TAG_NAME = "pager";//标签名

    private static final int PRECEDENCE = 10000;//优先级,必须是10000,否则读取不到标签的赋值

    public PagingTagProcessor(String dialectPrefix)

        super(

                TemplateMode.HTML,      // 此处理器将仅应用于HTML模式

                dialectPrefix,          // 要应用于名称的匹配前缀

                TAG_NAME,              // 标签名称:匹配此名称的特定标签

                true,                  // 没有要应用于标签名称的前缀

                null,                  // 无属性名称:将通过标签名称匹配

                false,                  // 没有要应用于属性名称的前缀

                PRECEDENCE              // 优先(内部方言自己的优先)

        );

   

    @Override

    protected void doProcess(ITemplateContext context,

                            IProcessableElementTag tag,

                            IElementTagStructureHandler structureHandler)

        String url = ((WebEngineContext) context).getRequest().getRequestURL().toString();

        String queryString = ((WebEngineContext) context).getRequest().getQueryString();

        String pageUrl = "";

        if (StringUtils.isEmpty(queryString))

            pageUrl = url + "?page=";

        else

            pageUrl = url + "?" + queryString + "&page=";

       

        ApplicationContext appCtx = SpringContextUtils.getApplicationContext(context);

        //读取标签内容(当前页),注意标签必须是自带标签才能正常读取值

        String pageIndexString = tag.getAttributeValue("value");

        //读取标签内容(页码大小)

        String pageSizeString = tag.getAttributeValue("size");

        //读取标签内容(数据大小)

        String totalSizeString = tag.getAttributeValue("rows");

   



```

### 3、使用@Bean注解完成方言注入

在SpringBoot Application类中加入注入

```

    @Bean

    public PagingDialect paging()

        return new PagingDialect();

   

```

### 4、页面应用

```

```

springboot中怎么自定义thymeleaf标签

参考技术A th:attr="data-title=$title"这样就可以了th:attr="data-title=$subMenu.name"

以上是关于SpringBoot2中使用thymeleaf3自定义分页方言的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf内置对象表达式大全

SpringBoot2.x开发案例之整合Quartz任务管理系统

sec:authorize 不起作用 - Spring Boot 2、Thymeleaf 3、Thymeleaf Spring Security 5 集成包

Thymeleaf3语法详解解解解解

Thymeleaf3.0简介

Spring Boot Thymeleaf 模板引擎的使用