本文主要是介绍我擦,在thymeleaf中使用自定义加密插件原来这么爽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我的个人博客已经上线一段时间了,但一直让我苦恼的事情是在帖子详情的链接,直接暴露了帖子的id,于是我想办法尝试在tymeleaf中使用自定义插件,通过expression应用到tymeleaf中
效果图展示地址,随便点击一个帖子查看上方链接就行
这里thymeleaf的版本号是3.x
- 自定义dialect
package com.daishu.bbs.config;import com.daishu.bbs.util.AESUtil;
import org.thymeleaf.context.IExpressionContext;
import org.thymeleaf.dialect.AbstractDialect;
import org.thymeleaf.dialect.IExpressionObjectDialect;
import org.thymeleaf.expression.IExpressionObjectFactory;import java.util.Collections;
import java.util.Set;/*** @author : xuzhennan @Project : daishu @Package : com.daishu.bbs.config* @email : xuzhennan@58.com* @date : 2022年03月02日 下午12:01*/
public class CustomDialect extends AbstractDialect implements IExpressionObjectDialect {public CustomDialect() {super("Custom Dialect");}@Overridepublic IExpressionObjectFactory getExpressionObjectFactory() {return new IExpressionObjectFactory() {@Overridepublic Set<String> getAllExpressionObjectNames() {return Collections.singleton("aesUtil");}@Overridepublic Object buildObject(IExpressionContext context, String expressionObjectName) {return new AESUtil();}@Overridepublic boolean isCacheable(String expressionObjectName) {return true;}};}
}
- 加载自定义dialect
@Configuration
public class ThymeleafConfig {@Beanpublic CustomDialect myDialect() {return new CustomDialect();}
}
- 在页面的应用方式
<a th:href="@{|/article/detail/${#aesUtil.encrypt(post.id)}|}" th:utext="${post.title}"></a>
如果tyhmeleaf版本号是2.x
public class MyDialect extends AbstractDialect implements IExpressionEnhancingDialect {public MyDialect() {super();}@Overridepublic String getPrefix() {// @see org.thymeleaf.dialect.IDialect#getPrefixreturn "xxx";}@Overridepublic boolean isLenient() {return false;}@Overridepublic Map<String, Object> getAdditionalExpressionObjects(IProcessingContext ctx) {Map<String, Object> expressions = new HashMap<>();expressions.put("aesUtil", new AESUtil());return expressions;}
}
这篇关于我擦,在thymeleaf中使用自定义加密插件原来这么爽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!