[英]Parse velocity variables within java
以下是我想做的一個例子。 我有一堆文件,例如test1.vm:
Welcome ${name}. This is test1.
然后,我有一個名為defaults.vm的文件:
#set($name = "nmore")
我想要使用defaults.vm中的變量渲染test1.vm(和其他測試文件),而不使用#parse,因為我必須修改所有測試文件。
有沒有辦法從隨附的Java文件中執行此操作?
我不確定您是否有任何約束或其他特定要求,但是如果您沒有嘗試使用Velocity API,該怎么辦? 像這樣:
Context context = new VelocityContext();
Template template = Velocity.getTemplate("src/main/resources/defaults.vm");
template.merge(context, NullWriter.NULL_WRITER);
StringWriter writer = new StringWriter();
Template toBeParsedTemplate = Velocity.getTemplate("src/main/resources/test1.vm");
toBeParsedTemplate.merge(context, writer);
String renderedContent = writer.getBuffer().toString();
System.out.println(renderedContent);
這個想法是用從defaults.vm
生成的變量填充Context
對象,並使用相同的上下文來評估test1.vm
。
我已經嘗試使用Velocity 1.7和commons-io 2.4(對於NullWriter
)運行良好,但是我不確定這是否可以滿足您的要求,或者您是否正在尋找其他替代品(不使用Velocity API) )。
有關Context
對象的更多信息,請Context
:
http://velocity.apache.org/engine/devel/developer-guide.html#The_Context
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.