0
即時使用速度模板和CQ5。我已安裝的velocity scriptengine可識別預定義的CQ對象。我想知道如何將用戶定義的java對象傳遞給速度腳本引擎。 我想類似這樣的東西: http://groovy.codehaus.org/JSR+223+Scripting+with+Groovy將用戶定義的java對象傳遞給速度scriptengine
但它不work..Kindly幫我解決這個情況提前
感謝
即時使用速度模板和CQ5。我已安裝的velocity scriptengine可識別預定義的CQ對象。我想知道如何將用戶定義的java對象傳遞給速度腳本引擎。 我想類似這樣的東西: http://groovy.codehaus.org/JSR+223+Scripting+with+Groovy將用戶定義的java對象傳遞給速度scriptengine
但它不work..Kindly幫我解決這個情況提前
感謝
你只需要使用VelocityContext
傳遞對象參數一樣context.put("name_of_parameter", yourOBject);
在我的例子中,test.temalate
,$person.address
表示person對象的平均調用地址getter方法。
示例:試試如下
Person.java 公共類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;
}
}
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>
「Getter方法」是關鍵詞。謝謝! – Sebastian 2015-09-21 12:01:23