怎么在html中写自定义freemaker标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在html中写自定义freemaker标签相关的知识,希望对你有一定的参考价值。

    使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以你直接用ftl页面就行
    直接使用java代码就可以了

    Java代码  

    在页面中加入下列一行即可:  

    <#global hm=JspTaglibs["/WEB-INF/hymake.tld"]><#global ww=JspTaglibs["/WEB-INF/webwork.tld"]>  

    写成跟宏类似就行,以@开头:  

  <@ww.select label="aa" name="bb" list="\'en_US\',\'zh_CN\'"/>  

参考技术A package com.lenxeon.extjs.cms.directive;
 
import com.lenxeon.extjs.cms.bean.Channel;
import com.lenxeon.extjs.cms.bean.HotWord;
import com.lenxeon.extjs.cms.dao.ChannelService;
import com.lenxeon.extjs.cms.dao.HotWordService;
import com.lenxeon.extjs.cms.utils.ParamUtils;
import com.lenxeon.extjs.resource.bean.Article;
import com.lenxeon.extjs.resource.dao.ArticleService;
import freemarker.core.Environment;
import freemarker.template.*;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@Component
public class ArticleDirective implements TemplateDirectiveModel 
 
    @Autowired
    private ArticleService articleService;
 
    @Autowired
    private ChannelService channelService;
 
    @Autowired
    private HotWordService hotWordService;
 
    @Override
    public void execute(Environment env, Map params, TemplateModel[] templateModels, TemplateDirectiveBody body) throws TemplateException, IOException 
        int rid = ParamUtils.getIntValue(params, "rid");
        Article article = articleService.findById(rid);
        List<Channel> channels = channelService.listByResource(rid);
        if (channels != null && channels.size() > 0) 
            env.setVariable("channel", ObjectWrapper.DEFAULT_WRAPPER.wrap(channels.get(0)));
        
        if (true) 
            if (article.getContent() != null && StringUtils.isNotBlank(article.getContent().getContent())) 
                Map map = new HashMap();
                map.put("siteId", 1);
                List<HotWord> hotWords = hotWordService.list(map);
                String content = StringUtils.defaultString(article.getContent().getContent());
                for (HotWord hotWord : hotWords) 
                    content = replace(content, hotWord);
                
                article.getContent().setContent(content);
            
        
        env.setVariable("article", ObjectWrapper.DEFAULT_WRAPPER.wrap(article));
        body.render(env.getOut());
    
 
    private String replace(String data, HotWord hotWord) 
        try 
            if (hotWord != null) 
                if (hotWord.getType() == 0 && StringUtils.isNotBlank(hotWord.getName())) 
                   data = StringUtils.replace(data, hotWord.getName(), hotWord.getReplaceTo());
                
                if (hotWord.getType() == 1 && StringUtils.isNotBlank(hotWord.getName())) 
                    String html = "<a class='hot_word' href='" + hotWord.getReplaceTo() + "' target='" + hotWord.getTarget() + "' alt='" + URLEncoder.encode(hotWord.getSummary()) + "'>"
                            + hotWord.getName()
                            + "</a>";
                    data = StringUtils.replace(data, hotWord.getName(), html);
                
            
         catch (Exception e) 
            e.printStackTrace();
        
        return data;
    
 

参考技术B 要想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用。。web.xml 中freemarker拦截器(制定拦截*.html的页面 参考技术C 想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以你直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用。web.xml 中freemarker拦截器(制定拦截*.html的页面) 参考技术D 不推荐。
你要想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以你直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用。。web.xml 中freemarker拦截器(制定拦截*.html的页面)本回答被提问者采纳

以上是关于怎么在html中写自定义freemaker标签的主要内容,如果未能解决你的问题,请参考以下文章

Freemaker模板指令

如何写自定义 React Hook?

是否可以在 Google Maps API v3 上编写自定义文本?

使用 custom element 创建自定义元素

Freemaker使用教程

jsp自定标签