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

 我来答
帐号已注销
2016-01-26 · 知道合伙人互联网行家
帐号已注销
知道合伙人互联网行家
采纳数:369 获赞数:1568
毕业于北京大学,硕士学位。现任百度知道管理岗位已有5年。愿意为网友解答百度产品问题。

向TA提问 私信TA
展开全部
  1. 使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以你直接用ftl页面就行
    直接使用java代码就可以了

  2. Java代码  

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

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

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

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

兰亭幽草
2016-03-21 · TA获得超过2946个赞
知道小有建树答主
回答量:1453
采纳率:46%
帮助的人:361万
展开全部
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;
    }
 
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
育知同创教育
2018-07-05 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
要想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用。。web.xml 中freemarker拦截器(制定拦截*.html的页面
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
农村哪些事
2016-02-26 · TA获得超过1771个赞
知道小有建树答主
回答量:1240
采纳率:52%
帮助的人:210万
展开全部
想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以你直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用。web.xml 中freemarker拦截器(制定拦截*.html的页面)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星月小木木
2016-01-23 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:9494万
展开全部
不推荐。
你要想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html所以你直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用。。web.xml 中freemarker拦截器(制定拦截*.html的页面)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式