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

后续会陆续补充……

目录
相关文章
|
数据采集 搜索推荐 前端开发
HTML语义化 —— 定义网页的语义
HTML语义化 —— 定义网页的语义
39 0
|
1月前
|
移动开发 开发者 UED
HTML5 语义元素详解
HTML5引入了诸多语义元素
|
5月前
|
数据采集 移动开发 搜索推荐
HTML基础-HTML5新增语义标签:解锁网页结构新维度
【6月更文挑战第5天】本文介绍了HTML5的语义标签,旨在提升网页结构化和可访问性。核心语义标签包括`&lt;header&gt;`、`&lt;nav&gt;`、`&lt;main&gt;`、`&lt;article&gt;`、`&lt;section&gt;`、`&lt;aside&gt;`、`&lt;footer&gt;`、`&lt;figure&gt;`和`&lt;figcaption&gt;`。常见问题包括滥用标签作布局工具、忽略`&lt;main&gt;`、不恰当嵌套和忽视辅助功能。
100 3
|
6月前
|
前端开发 搜索推荐 UED
《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)
《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)
44 0
|
Web App开发 数据采集 JavaScript
面试官:请用纯 JS 实现,将 HTML 网页转换为图像
在工作时,需要实现一个功能:把一个HTML网页的转换为图像。我想到的第一个想法是使用第三方库,但像dom-to-image或使用Chrome Headless,如Puppeteer。那如何使用纯Javascript解决这种需求呢?
314 0
|
移动开发 前端开发 开发者
前端祖传三件套HTML的HTML5之新语义/结构元素 header/footer/article/aside/nav
HTML5 是 Web 技术的重要更新,它引入了许多新特性,其中包括一些新的语义/结构元素。这些新元素可以更好地描述页面内容的结构和意义,使得开发者能够更好地进行页面设计和优化。
142 0
|
移动开发 HTML5
一文搞懂HTML5标签新特性【视频、音频、语义】
一文搞懂HTML5标签新特性【视频、音频、语义】
133 0
一文搞懂HTML5标签新特性【视频、音频、语义】
|
前端开发 开发者
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
|
前端开发 Python
HTML通过Ajax上传图像至Django后端并转换为Mat图像
HTML通过Ajax上传图像至Django后端并转换为Mat图像
html+css实战81-显示模式-模式转换
html+css实战81-显示模式-模式转换
123 0
html+css实战81-显示模式-模式转换