我有一個模板將包含#parse其他模板。 問題是,我不知道我想解析alwais的文件存在。Apache速度IncludeTool - 有條件包含
我已經在velocity-tools-2.0.jar中找到了IncludeTool類,我已經添加了一個變量,但是仍然必須測試它時失敗。 有人能告訴我如何將IncludeTool添加到我的模板?
private VelocityContext transmitParameters(params prm){
VelocityContext c = new VelocityContext();
//transmit parameters one by one
c.put("program_name", prm.getProgram_name());
c.put("date", new DateTool());
c.put("incl", new IncludeTool());
return c;
}
public generate(params prm) {
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, constants.TEMPLATE_PATH);
ve.init();
context = new VelocityContext(transmitParameters(p));
writer = new StringWriter();
t.merge(context, writer);
}
而且模板
#if($incl.exists("templates/$record.name/file.vm"))
#parse("$record.name/file.vm")
#end
謝謝。
1.如果文件存在,解析工作正常。但我不想創建空模板,以使#parse函數可以工作 2.它打印出來:org.apache.velocity.tools.view.IncludeTool –
引起:java.lang.NullPointerException在 org.apache。 velocity.tools.view.IncludeTool.exists(IncludeTool.java:192) 內IncludeTool.java '公佈爾存在(字符串名稱){ 嘗試模板和靜態內容 回報 {// 檢查engine.resourceExists(名稱); } //確認這個... catch(ResourceNotFoundException rnfe) { return false; } }' –
這裏是引擎的初始化: 'VelocityEngine ve = new VelocityEngine(); ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,constants.TEMPLATE_PATH); ve.init();' –