
### 1、定义方言Dialect
继承AbstractProcessorDialect
```
public class PagingDialect extends AbstractProcessorDialect {
private static final String DIALECT_NAME = "PagingDialect";//定义方言名称
public PagingDialect() {
super(DIALECT_NAME, "paging", StandardDialectPROCESSOR_PRECEDENCE);
//优先级:值必须为:StandardDialectPROCESSOR_PRECEDENCE
}
@Override
public Set getProcessors(String dialectPrefix) {
Set processors = new HashSet();
//添加我们定义的标签
processorsadd(new PagingTagProcessor(dialectPrefix));
processorsadd(new StandardXmlNsTagProcessor(TemplateModeHTML, 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(
TemplateModeHTML, // 此处理器将仅应用于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 (StringUtilsisEmpty(queryString)) {
pageUrl = url + "page=";
} else {
pageUrl = url + "" + queryString + "&page=";
}
ApplicationContext appCtx = SpringContextUtilsgetApplicationContext(context);
//读取标签内容(当前页),注意标签必须是自带标签才能正常读取值
String pageIndexString = taggetAttributeValue("value");
//读取标签内容(页码大小)
String pageSizeString = taggetAttributeValue("size");
//读取标签内容(数据大小)
String totalSizeString = taggetAttributeValue("rows");
}
}
```
### 3、使用@Bean注解完成方言注入
在SpringBoot Application类中加入注入
```
@Bean
public PagingDialect paging() {
return new PagingDialect();
}
```
### 4、页面应用
```
```
Thymeleaf是Springboot官方推荐的模板引擎,但仅能渲染html xhtml这类型的格式,是实实在在的页面模板引擎。
开发过程中会遇到各种各样的需求,想要调用springboot上下文中bean的方法,thymeleaf使用@来调用bean方法:
这里我简单解释一下,我在所有业务上的css和js上的资源路径后缀加了一个时间戳的参数,在开发阶段保证了因浏览器缓存,带来的预览不及时等问题,因此我在常量中设置了参数dev,根据dev常量的参数来动态开启后缀。
浏览器开发者模式,效果如下:
常量方法很也普通
如上所示,thymeleaf @{}标签是资源标签,可以保证引用的资源开头都会加上contextPath,
thymeaf使用${}来表示变量,使用@跟上bean的名称就可以调用了,是不是很简单。
以上就是关于SpringBoot2中使用thymeleaf3自定义分页方言全部的内容,包括:SpringBoot2中使用thymeleaf3自定义分页方言、Thymeleaf调用Springboot bean的方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)