передача определенных пользователем объектов Java в скриптовый движок скорости

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

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

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


person user1201605    schedule 22.02.2012    source источник


Ответы (1)


Вам просто нужно использовать 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;
    }
}

Тест.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>
person Zaw Than oo    schedule 02.11.2012
comment
Метод геттера был ключевым словом. Спасибо! - person Sebastian; 21.09.2015