我是靠谱客的博主 拼搏太阳,最近开发中收集的这篇文章主要介绍SpringBoot中Thymeleaf自定义标签,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Springboot中thymeleaf 自定义标签,实现按钮隐藏功能

1.  springboot已经可以直接使用thymeleaf

2. 自定便宜标签声明类继承AbstractDialect,使用Component注解,我这里定义为mdm标签

/**
 
按钮权限自定义标签名::mdm
 
*/

@Component
public class CustomLabel extends AbstractDialect{
   
@Override
   
public StringgetPrefix() {
       
return "mdm";
   
}
   
@Override
   
public Set<IProcessor>getProcessors() {
       
final Set<IProcessor>processors = new HashSet<>();
       
processors.add(new CustomLabelElement());
       
return processors;
   
}
}

3. 自定义需要实现功能的类CustomLabelElement继承

**
 * 按钮权限自定义标签:功能类
 */
@Component
public class CustomLabelElement extends AbstractMarkupSubstitutionElementProcessor {

    public CustomLabelElement() {
        super("contains");
    }
    @Override
    protected List<Node> getMarkupSubstitutes(Arguments arguments, Element element) {
        //获取标签自定义属性的值 这里定义了两个,srcList和str
        String srcList = element.getAttributeValue("srcList");
        String str = element.getAttributeValue("str");
        List<Node> nodes = null;
/**如果自定义的str在后台查询的list中,则返回自定义标签mdm中的所有子标签*/
        if(srcList.contains(str)){
            //有按钮权限
            Element firstElementChild = element.getFirstElementChild();
            nodes = element.getChildren();
        } else {
/**如果自定义的str不在后台查询的list中,则移除自定义标签下的所有标签(或自己选中的标签),这样可以做到不显示子标签的效果*/
            //没有按钮权限
            List<Node> children = element.getChildren();
            for (Node n:children) {
                element.removeChild(n);
            }
            nodes = element.getChildren();
        }
        return nodes;
    }
    @Override
    public int getPrecedence() {
        return 1000;
    }
}

4. 页面的使用,添加命名

最终可以实现新增显示,编辑不显示的效果。

 

最后

以上就是拼搏太阳为你收集整理的SpringBoot中Thymeleaf自定义标签的全部内容,希望文章能够帮你解决SpringBoot中Thymeleaf自定义标签所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部