《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>
                    
  • ${item ?if_exists}
  •  

    你可能感兴趣的:(java)