velocity的html语义转换

本文介绍了Velocity模板引擎的不同版本对HTML的处理方式,并演示了如何在Velocity中使用自定义的Java工具类来增强模板的功能,例如日期格式化和字符串操作。此外,还提供了一个实用的工具类示例,用于从字符串模板生成Velocity内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、html语义转换
(1)velocity1.5版本默认不转换html
(2)velocity1.6、1.7版本默认转换html
(3)虽然转换后的html能够防止xss,但是,有时页面就是需要不转换的数据,如json字符串,可以通过#noescape()$!{data}#end即可,注意webx中一般配置了velocity,但是spring mvc中没有配置velocity,一定要注意看清楚
2、velocity中加入java工具类
velocity页面展示时经常需要日期格式化,字符串判断等需求,可以在将java工具类放在velocity中供页面使用,如
(1)字符串工具类

context.put("stringUtils", new StringUtils());

页面使用

#if($!stringUtils.contains($!{roleId},"1"))
#end

(2)日期工具类

context.put("date", new DateTool());

页面使用

$!date.format('yyyy-MM-dd',$!visitor.visitorStart)

3、有时候velocity的模板内容可能是存在数据库或者缓存中的字符串,这时候需要将模板内容读出后,将模板中的变量进行替换,生成模板内容,可以使用如下工具类

import java.io.StringWriter;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

import com.laiwang.common.collect.Maps;

/**
 * @author liangtu on 2017年5月26日
 */
public class VelocityUtil {

    /**
     * 字符串模板生成velocity模板内容
     * 
     * @param content
     *            字符串模板
     * @param model
     *            字符串模板中的变量
     */
    public static String generateContent(String content, Map<String, Object> model) {
        if (StringUtils.isBlank(content)) {
            return "";
        }
        Velocity.init();
        VelocityContext context = new VelocityContext();
        if (MapUtils.isNotEmpty(model)) {
            for (Entry<String, Object> entry : model.entrySet()) {
                context.put(entry.getKey(), entry.getValue());
            }
        }
        StringWriter stringWriter = new StringWriter();
        Velocity.evaluate(context, stringWriter, "velocity", content);
        return stringWriter.toString();
    }
}

后续会陆续补充……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值