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

SpringBoot2中使用thymeleaf3自定义分页方言,第1张

### 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的方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10196277.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存