velocity的html语义转换

简介: 1、velocity1.5版本默认不转换html 2、velocity1.6、1.7版本默认转换html 3、虽然转换后的html能够防止xss,但是,有时页面就是需要不转换的数据,如json字符串,可以通过#noescape()$!{data}#end即可

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();
    }
}

后续会陆续补充……

目录
相关文章
|
7月前
|
数据采集 搜索推荐 前端开发
HTML语义化 —— 定义网页的语义
HTML语义化 —— 定义网页的语义
26 0
|
6天前
|
前端开发 搜索推荐 UED
《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)
《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)
22 0
|
移动开发 前端开发 开发者
前端祖传三件套HTML的HTML5之新语义/结构元素 header/footer/article/aside/nav
HTML5 是 Web 技术的重要更新,它引入了许多新特性,其中包括一些新的语义/结构元素。这些新元素可以更好地描述页面内容的结构和意义,使得开发者能够更好地进行页面设计和优化。
113 0
|
Web App开发 数据采集 JavaScript
面试官:请用纯 JS 实现,将 HTML 网页转换为图像
在工作时,需要实现一个功能:把一个HTML网页的转换为图像。我想到的第一个想法是使用第三方库,但像dom-to-image或使用Chrome Headless,如Puppeteer。那如何使用纯Javascript解决这种需求呢?
244 0
|
前端开发 Python
HTML通过Ajax上传图像至Django后端并转换为Mat图像
HTML通过Ajax上传图像至Django后端并转换为Mat图像
|
移动开发 HTML5
一文搞懂HTML5标签新特性【视频、音频、语义】
一文搞懂HTML5标签新特性【视频、音频、语义】
113 0
一文搞懂HTML5标签新特性【视频、音频、语义】
|
前端开发 开发者
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
html+css实战81-显示模式-模式转换
html+css实战81-显示模式-模式转换
99 0
html+css实战81-显示模式-模式转换
|
Java
【更多小知识】【HTML】【JAVA】toString还能转换n进制
【更多小知识】【HTML】【JAVA】toString还能转换n进制
143 0
【更多小知识】【HTML】【JAVA】toString还能转换n进制
|
JavaScript
html实体转换
html实体转换