0

我在 CQ5 中使用速度模板。我安装的速度脚本引擎可以识别预定义的 CQ 对象。我想知道如何将用户定义的 java 对象传递给速度脚本引擎。我尝试了类似的东西:http: //groovy.codehaus.org/JSR+223+Scripting+with+Groovy

但它不起作用..请帮我解决这种情况

提前致谢

4

1 回答 1

4

您只需要像 在我的示例中那样使用VelocityContext传递对象参数,即调用人员对象的地址 getter 方法。context.put("name_of_parameter", yourOBject);test.temalate$person.address

示例:尝试如下

Person.java public class Person { 私有字符串名称;私有字符串地址;

    public Person(String name, String address) {
        this.name = name;
        this.address = address;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAddress() {
        return address;
    }
}

测试.java

import java.io.StringWriter;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;


public class Test {
    public static void main(String[] args) {
        VelocityEngine ve = new VelocityEngine();
        ve.init();
        Template template = ve.getTemplate("test.template");
        VelocityContext context = new VelocityContext();
        context.put("person", new Person("Jhon", "London"));
        StringWriter writer = new StringWriter();
        template.merge(context, writer);
        System.out.println(writer.toString());
    }
}

测试模板

<table>
    <tr>
        <td>Name</td>
        <td>$person.name</td>
    </tr>
    <tr>
        <td>Address</td>
        <td>$person.address</td>
    </tr>
</table>

您将获得如下输出。

<table>
    <tr>
        <td>Name</td>
        <td>Jhon</td>
    </tr>
    <tr>
        <td>Address</td>
        <td>London</td>
    </tr>
</table>
于 2012-11-02T08:24:54.507 回答