以下是我想要做的示例。我有一堆文件,例如 test1.vm:
Welcome ${name}. This is test1.
Run Code Online (Sandbox Code Playgroud)
然后我有一个名为defaults.vm的文件:
#set($name = "nmore")
Run Code Online (Sandbox Code Playgroud)
我希望使用 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);
Run Code Online (Sandbox Code Playgroud)
Context这个想法是,您使用生成的变量填充对象defaults.vm,并使用相同的上下文来评估test1.vm。
我已经使用 Velocity 1.7 和 commons-io 2.4 (对于NullWriter)进行了尝试,似乎工作正常,但我不确定这是否可以满足您的要求,或者您正在寻找其他替代方案(不使用 Velocity API) 。
有关该对象的更多信息Context:
http ://velocity.apache.org/engine/devel/developer-guide.html#The_Context
希望有帮助。
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |