`
wenjinglian
  • 浏览: 821986 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

Velocity字符串模板替换

    博客分类:
  • JAVA
阅读更多

示例:

 

 

public class VelocityTest {

    private static Properties props = new Properties();

    static {
        props.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
        props.setProperty(Velocity.RESOURCE_LOADER, "class");
        props.setProperty("class.resource.loader.class",
                "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
    }

    public static void main(String[] args) {
        testStringVelocity();
        testCommonsStringUtils();
    }

    /**
     * 测试字符串模板替换
     */
    private static void testStringVelocity() {
        // 初始化并取得Velocity引擎
        VelocityEngine engine = new VelocityEngine(props);
        // 字符串模版
        String template = "${owner}:您的${type} : ${bill} 在  ${date} 日已支付成功";
        // 取得velocity的上下文context
        VelocityContext context = new VelocityContext();
        // 把数据填入上下文
        context.put("owner", "nassir");
        context.put("bill", "201203221000029763");
        context.put("type", "订单");
        context.put("date",
                new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        StringWriter writer = new StringWriter();
        engine.evaluate(context, writer, "", template);
        System.out.println(writer.toString());
        
    }

    /**
     * 测试模板静态方法使用
     */
    private static void testCommonsStringUtils() {
        VelocityEngine engine = new VelocityEngine();
        engine.init();
        VelocityContext ctx = new VelocityContext();
        ctx.put("stringUtils", new StringUtils());
        ctx.put("comments", "this is a \n newline test");
        ctx.put("newline", "\n");
        ctx.put("break", "<br/>");
        String template = "#set($comments = $stringUtils.replace($comments,$newline,$break))";
        template += "$comments";
        StringWriter writer = new StringWriter();
        engine.evaluate(ctx, writer, "", template);
        System.out.println(writer.toString());
        // assertEquals("this is a <br /> newline test", writer.toString());
    }
}
 

 

运行结果:

 

nassir:您的订单 : 201203221000029763 在  2012-03-26 18:13:01 日已支付成功

this is a 

 newline test

 

分享到:
评论
2 楼 wenjinglian 2012-04-13  
lhw891104 写道
这个帖子给我帮助太大了,正要用它呢

1 楼 lhw891104 2012-04-13  
这个帖子给我帮助太大了,正要用它呢

相关推荐

    Java用正则表达式实现${name}形式的字符串模板实例

    正则表达式是实现这种字符串模板替换的一种有效方法。 在给定的实例中,`renderString` 方法演示了如何使用正则表达式和Java的 `Pattern` 和 `Matcher` 类来完成字符串模板的替换。以下是对这个方法的详细解释: 1...

    Velocity模板解析

    当Velocity引擎处理模板时,它会将这些指令和变量替换为实际的值,生成最终的输出。 1. **Velocity模板语法** - **变量引用**:在Velocity模板中,通常使用`$variable`来引用Java对象的属性,例如`$user.name`表示...

    Java Velocity模板引擎,简单字符串生成

    运行上述Java代码后,输出的HTML字符串将替换掉模板中的VTL变量,形成如下内容: ```html 欢迎,张三! 你好,你今年已经30岁了。 ``` 这就是Java Velocity模板引擎的基本使用方法和核心概念。它通过简单易懂...

    Velocity实现模板(详细步奏)

    ` 或 `${}` 来确保即使变量未定义,也能输出空字符串,防止模板解析错误。 在实际应用中,Velocity 可以与各种框架集成,例如与 Struts MVC 框架结合,将 Velocity 作为视图组件,实现模型-视图-控制器架构中的视图...

    Velocity模板入门DEMO

    例如,`#set($name = "John")` 将字符串"John"赋值给变量$name。这个指令允许我们在模板中进行简单的算术和逻辑运算。 3. **$引用**:在模板中,以`$`开头的表达式用于输出变量的值。例如,`Hello, $name!` 在遇到$...

    velocity+itext导出pdf

    这些数据可以是Java对象、字符串、数字等,它们会替换模板中的占位符。 4. **合并模板与数据**:使用`VelocityEngine`的`mergeTemplate`方法,将模板和上下文合并,生成一个字符串,这个字符串包含了所有动态数据...

    velocity例子

    - 渲染模板:调用`Velocity.mergeTemplate()`方法,将模板与上下文合并,生成最终的输出字符串。 4. **Velocity模板语言(VTL)示例** - **变量引用**:`$name`会输出上下文中对应的`name`对象的值。 - **条件...

    itext+velocity 填充字段 html转pdf

    然后,使用Velocity将这些模板与数据源(如数据库、JSON对象或JavaBean)相结合,将动态数据替换到这些占位符中,生成最终的HTML字符串。 接下来,iText库介入,它读取这个HTML字符串并将其转换为PDF格式。iText...

    velocity jar包

    这些依赖库为Velocity提供了一些基础功能,如日志记录、字符串操作等。 在实际使用中,你需要将这三个JAR文件添加到项目的类路径(Classpath)中,这样Java虚拟机才能找到并加载它们。在Maven或Gradle构建系统中,...

    Velocity语法以及整合struts2总结

    5. **字符串操作**:如`#set($str = $str.uppercase())`将字符串转为大写。 **四、使用Velocity实现静态化** 1. **预渲染**:在服务器端,Velocity可以先将模板和数据结合生成静态HTML页面,然后直接发送给客户端...

    《Velocity java开发指南》中文版

    变量可以是字符串、数字或布尔值,它们允许在模板中进行简单的计算和逻辑判断。 Velocity的优势之一在于其与MVC(模型-视图-控制器)架构的兼容性。在Web应用中,Velocity可以作为视图组件,与Struts等MVC框架集成...

    Velocity Demo

    4. **合并上下文与模板**:调用`evaluate()`或`merge()`方法,将上下文中的数据与模板合并,生成最终的输出字符串。 5. **输出结果**:将生成的字符串写入到响应流中,用户就可以在浏览器上看到结果了。 学习...

    Velocity实战操作

    - 字符串操作:`#concat`,连接字符串 - 数学运算符:`+`, `-`, `*`, `/`, `%` ### 5. 模板与上下文 Velocity模板与Java代码中的上下文对象交互。上下文对象包含了模板需要的所有变量,这些变量可以通过`put`方法...

    velocity教程

    5. **处理结果**: 输出合并后的字符串,通常写入到文件或直接发送到客户端。 **四、Velocity实例** 一个简单的Velocity模板可能如下所示: ```html &lt;!DOCTYPE html&gt; $title &lt;h1&gt;Welcome, $username! &lt;p&gt;...

    velocity生成静态页面实例

    在这个过程中,`VelocityEngine`负责加载和解析模板,`evaluate()`方法将模板和上下文合并,生成HTML字符串。最后,我们可以将`htmlOutput`写入到一个HTML文件中,这样就完成了静态页面的生成。 在提供的压缩包文件...

    Velocity 入门

    - **解析模板**: 使用引擎的 `mergeTemplate()` 方法,传入模板路径和上下文,得到输出字符串。 - **输出结果**: 将生成的字符串写入到响应流,或者保存为文件。 ### 5. Velocity 与其他模板引擎比较 - **...

    velocity 使用手冊整理

    variable}` 避免未定义变量抛出异常,返回空字符串。 - **宏的合理利用**: 通过宏提高代码复用性和可维护性。 - **上下文管理**: 仅在需要时将对象放入上下文,避免上下文过大影响性能。 - **模板资源管理**: ...

    Velocity入门教程实例

    7. 双引号和单引号:双引号会进行字符串内变量的替换,而单引号则不会,可以通过设置配置文件中的`stringliterals.interpolate`属性来改变这一默认行为。 8. 条件语句:使用#if指令,例如:`#if($foo) ... #end`,...

    Velocity用户手册.doc

    Velocity 还提供了对字符串、数值、范围操作的支持,以及对特殊字符的转义机制,确保模板的安全性和正确性。例如,货币符号和 VTL 引用的转义,以及大小写的替换。 在实际应用中,Velocity 不仅限于 Web 开发,还...

    Velocity 生成Action、Serv、Dao代码

    4. 渲染模板:使用设置好的上下文数据,结合模板文件生成代码字符串。 5. 生成文件:将渲染后的代码写入到指定目录,创建对应的Action、Serv、Dao类文件。 在实际应用中,`VelocityGenerator.java`可能还需要处理...

Global site tag (gtag.js) - Google Analytics