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自定义分页方言的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot2.x开发案例之整合Quartz任务管理系统
sec:authorize 不起作用 - Spring Boot 2、Thymeleaf 3、Thymeleaf Spring Security 5 集成包