《freemarker》springboot 制作freemarker自定义标签

1.快速体验

/**
 * 
 * @author guokaige
 * @Date   2019年5月7日 上午10:54:42
 */
@Component
public class CustomTagDirective implements TemplateDirectiveModel {
	
    private static final String METHOD_KEY = "method";
    

    @SuppressWarnings("rawtypes")
	@Override
    public void execute(Environment environment, Map map, TemplateModel[] templateModels, TemplateDirectiveBody templateDirectiveBody) throws TemplateException, IOException {
        if (map.containsKey(METHOD_KEY)) {
        	
            DefaultObjectWrapperBuilder builder = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_28);
            //从map获取参数
            String method = map.get(METHOD_KEY).toString();
            
            switch (method) {
                case "tagsList":
                    // 将数据对象转换成对应的TemplateModel
                    TemplateModel tm = builder.build().wrap(Lists.newArrayList("limitTag","testTag"));
                    environment.setVariable("dataList", tm);
                    break;
               // case other...
                default:
                    break;
            }
        }
        templateDirectiveBody.render(environment.getOut());
    }
}
@Configuration
public class FreeMarkerConfig {

    @Autowired
    protected freemarker.template.Configuration configuration;
    
    @Autowired
    protected CustomTagDirective customTagDirective;

    /**
     * 添加自定义标签
     */
    @PostConstruct
    public void setSharedVariable() {
        /*
         * 向freemarker配置中添加共享变量;
         */
        configuration.setSharedVariable("limitShow", customTagDirective);
    }
}

 

<@limitShow method="tagsList" pageSize="10">
                <#list dataList as item>
                    <li class="tag-li">
                            ${item ?if_exists}
                    </li>
                </#list>
</@limitShow>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值