Передача пользовательских Java-объектов в ScriptTine - PullRequest
0 голосов
/ 22 февраля 2012

я использую шаблон скорости с CQ5.сценарий скорости, который я установил, идентифицирует предопределенные объекты CQ.Я хотел бы знать, как передать пользовательские объекты Java в движок скрипта скорости.Я пробовал что-то похожее на это: http://groovy.codehaus.org/JSR+223+Scripting+with+Groovy

, но это не работает .. Пожалуйста, помогите мне разрешить эту ситуацию

Заранее спасибо

1 Ответ

4 голосов
/ 02 ноября 2012

Вам просто нужно использовать VelocityContext для передачи параметра объекта, например context.put("name_of_parameter", yourOBject); В моем примере test.temalate, $person.address означает метод получения адреса вызова объекта person.

Пример: Попробуйте, как показано ниже

Person.java открытый класс Person {private String name;частный строковый адрес;

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

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

test.template

<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>
...